Scrapy爬虫爬取0页求助:导出CSV文件为空
问题分析与解决办法
核心问题
从终端日志可定位关键问题:
- 你请求的
http://jessops.com/drones/被两次301重定向,最终跳转到网站首页https://www.jessops.com/,而非目标无人机列表页 - 爬虫在首页HTML中查找
div.details-pricing元素,自然无法匹配到内容,导致无数据导出
错误点修正
1. 修正allowed_domains配置
allowed_domains仅需填写主域名,不能包含路径,原代码中的['jessops.com/drones']是错误的,应改为:
allowed_domains = ['jessops.com']
2. 修正起始URL为HTTPS且带www
网站会将非www的HTTP请求重定向到www的HTTPS地址,直接使用最终目标URL可避免重定向:
start_urls = ['https://www.jessops.com/drones/']
3. 验证选择器有效性(可选)
虽然你提到scrapy shell中选择器可用,但建议修正URL后再次确认:
scrapy shell https://www.jessops.com/drones/
执行response.css('div.details-pricing')检查是否能获取到目标元素。
修正后的完整代码
import scrapy class DronesspiderSpider(scrapy.Spider): name = 'dronesspider' allowed_domains = ['jessops.com'] start_urls = ['https://www.jessops.com/drones/'] def parse(self, response): products = response.css('div.details-pricing') for product in products: item = { 'name': product.css('a::text').get(), 'price': product.css('p.price.larger::text').get() } yield item
额外提示
- 若需禁用robots协议,除命令行参数外,可直接在
settings.py中设置ROBOTSTXT_OBEY = False,更便捷 - 遇到重定向问题时,优先确认目标URL是否为网站实际使用的最终地址,避免不必要的资源消耗
内容的提问来源于stack exchange,提问作者Graves
相关产品推荐
相关产品推荐

