[英]Web Scraping using Scrapy
我正在抓取 Flipcart 網站,我想從網站上提取圖像 URL。 這是網站的鏈接。
import scrapy
from ..items import FlipcartItem
class QuotesSpider(scrapy.Spider):
name='quotes'
start_urls=[
'https://www.flipkart.com/clothing-and-accessories/topwear/pr?sid=clo%2Cash&otracker=categorytree&p%5B%5D=facets.ideal_for%255B%255D%3DMen'
]
def parse(self,response):
items=FlipcartItem()
image_url=response.css('._2r_T1I img::attr(src)').extract()
#product_page_url=response.css('').extract()
items['image_url']=image_url
#items['product_page']=title
yield items
這是我編寫的代碼,在運行代碼時我得到了一個空列表。像 image_url ["","",""]。有人可以建議我哪里出錯了嗎?
該站點正在使用 javascript 加載 scrapy 無法訪問的圖像。 您需要使用selenium來提取圖像數據。 在這里,我使用 scrapy 選擇器通過 selenium 提取圖像數據。 如果您想遵循此url或Z3CD13A277FBC2FEA5EF64364BF854C8 ,您可以使用 scrapy 和 selenium。
from selenium import webdriver
from scrapy.selector import Selector
browser = webdriver.Firefox(executable_path='./geckodriver')
browser.get(url="https://www.flipkart.com/clothing-and-accessories/topwear/pr?sid=clo%2Cash&otracker=categorytree&p%5B%5D=facets.ideal_for%255B%255D%3DMen")
page = browser.page_source
image_data = Selector(text=page)
image_data = image_data.css('img._2r_T1I::attr(src)').extract()
# print(image_data.xpath('//div[@class="CXW8mj _21_khk"]/img/@src').get())
print(image_data)
如果您需要安裝 selenium,請按照此url 操作。
您應該考慮更改此行:
image_url=response.css('._2r_T1I img::attr(src)').extract()
對此,
image_urls=response.css('img._2r_T1I').xpath('@src').getall()
此外,您應該知道,即使只有一個項目,您的“image_url”也將是一個數組,因為這就是 scrapy 返回的內容。 您可能希望遍歷結果並為每個結果創建一個新的FlipcartItem
,或者如果您只期望一個結果,您可能希望將其從列表中拉出。
我試過這樣做:
import scrapy
class QuotesSpider(scrapy.Spider):
name='quotes'
start_urls=[
'https://www.flipkart.com/clothing-and-accessories/topwear/pr?sid=clo%2Cash&otracker=categorytree&p%5B%5D=facets.ideal_for%255B%255D%3DMen'
]
def parse(self,response):
raw_image_urls=response.css('img._2r_T1I').xpath('@src').getall()
clean_image_urls=[]
for img_url in raw_image_urls:
clean_image_urls.append(response.urljoin(img_url))
yield{
'image_urls':clean_image_urls
}
但是獲取主頁的URL。不是圖像url。
這是一個 Javascript 生成的內容站點。 使用“查看頁面源”可以看到圖片src是空的。 代碼沒有錯。 只需使用Selenium或Scrapy Splash它們會為您加載所有 javascript,以便您可以抓取數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.