指出下面这段代码存在的问题import scrapy from scrapy import Request,Selector from TaobaoSpider.items import TaobaospiderItem class TaobaoSpider(scrapy.Spider): name = 'taobao' allowed_domains = ['taobao.com'] def start_requests(self): keywords = ['手机', '笔记本电脑', '键鼠套装'] for keyword in keywords: for page in range(2): url = f'https://s.taobao.com/search?q={keyword}&s={48 * page}' yield Request(url=url) # def parse_detail(self, response, **kwargs): # pass def parse(self, response, **kwargs): # 通过selenium帮助我们拿到淘宝页数据,在数据管道中实现 sel = Selector(response) selectors = sel.css('div.items > item.J_MouserOnverReq.item-ad > div.ctx-box.J_MouseEneterLeave.J_IconMoreNew') for selector in selectors: # type: Selector item = TaobaospiderItem() item['title'] = ''.join(selector.css('div.row.row-2.title > a> span::text').extract()).strip() item['price'] = selector.css('div.row.row-1.g-clearfix > div.price.g_price.g_price-highlight > strong::text').extract_first().strip() item['deal_count'] = selector.css('div.row.row-1.g-clearfix > div.deal-cnt::text').extract_first().strip() item['shop'] = selector.css('div.row.row-3.g-clearfix > div.shop > a > span:nth-child(2)::text').extract_first().strip() item['location'] = selector.css('div.row.row-3.g-clearfix > div.location::text').extract_first().strip() yield item
时间: 2024-04-01 08:31:45 浏览: 97
初学者scrapy框架爬取数据不成功,出现ERROR: Spider error processing错误问题的解决方法
这段代码存在以下问题:
1. 第二行的 import Selector 应该改为 from scrapy.selector import Selector,因为 scrapy 模块中没有 Selector 类,Selector 类是在 scrapy.selector 模块中定义的。同时,import Request 也应该改为 from scrapy import Request。
2. 第三行的 from TaobaoSpider.items import TaobaospiderItem 没有问题,但需要确保 TaobaospiderItem 在当前路径下存在。
3. 在 start_requests 函数中,参数 page 的范围应该是从 0 开始,而不是从 2 开始,否则会漏掉第一页的数据。
4. 在 parse 函数中,selectors 的 CSS 选择器应该是 'div.items > div.J_MouserOnverReq',而不是 'div.items > item.J_MouserOnverReq.item-ad > div.ctx-box.J_MouseEneterLeave.J_IconMoreNew',因为 item 和 ctx-box 这两个类名可能会变化。另外,应该在选择器后面加上 :not(.item-service)',以排除广告。
5. 在 parse 函数中,item['price'] 可能为 None,需要做异常处理。
阅读全文