首页 > 解决方案 > 使用 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 ["","",""]。有人可以建议我哪里出错了吗?

标签: pythonwebscrapyscreen-scraping

解决方案


该站点正在使用 javascript 加载scrapy 无法访问的图像。您需要使用 selenium来提取图像数据。在这里,我使用scrapy Selector 用硒提取图像数据。如果您想关注此urlscrapy splash ,您可以使用带有 selenium 的 scrapy 。

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操作。


推荐阅读