python - 使用 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 Selector 用硒提取图像数据。如果您想关注此url或scrapy 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操作。
推荐阅读
- excel - Power Query 中的 Excel 自定义函数
- flutter - 如何使小部件像按钮一样短暂改变颜色
- firebase - 第一个孩子的价值的Firebase规则
- c - 在C中递归删除单个链接列表中具有多个字段的节点
- php - 您可以通过引用将变量插入到字符串中吗?
- java - JPMS:--add-opens 不适用于 java.lang.reflect.InaccessibleObjectException
- highcharts - 将鼠标捕捉到 X 和 Y 轴
- php - 如何在 PHP 中正确编写用户定义函数?
- html - 在屏幕底部显示水平滚动条,而不是在元素底部
- javascript - ReduxForm - React 错误 - 对象作为 React 子级无效