为什么还是报错了
import scrapy
import re
class AppSpider(scrapy.Spider):
name = "app"
allowed_domains = ["list.jd.com"]
start_urls = ["https://list.jd.com/list.html?cat=1713%2C3258&ev=2953_75727%5E&page=1&s=1&click=0"]
def parse(self, response):
lis = response.xpath('//*[@id="J_goodsList"]/ul/li')
# print(lis)
# 当通过修改page跳转到一个非常大的页数时,有些网站会返回空。
# 这个时候就可以使用以下方法进行判断是否已经获取到最后一页数据
# 如果是,那就退出程序
if len(lis) != 0:
for i in lis:
title = i.xpath('.//div/div[3]/a/em/text()').get()
price = i.xpath('.//div/div[2]/strong/i/text()').get()
# print(title, price)
exp = re.compile('page=(\d*?)&s=(\d*?)&')
result = exp.findall(response.url)[0]
page = str(int(result[0])+1)
s = str(int(result[1])+38)
next_url = f"https://list.jd.com/list.html?cat=1123713%2C3258&page={page}&s={s}&click=0"
print(next_url)
yield scrapy.Request(url=next_url, callback=self.parse)
6
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小猿
2023-08-09 14:16:59
同学,你好!老师这边运行可以,同学尝试在spider代码里加上如下代码,看能否解决
import scrapy.utils.misc import scrapy.core.scraper def warn_on_generator_with_return_value_stub(spider, callable): pass scrapy.utils.misc.warn_on_generator_with_return_value = warn_on_generator_with_return_value_stub scrapy.core.scraper.warn_on_generator_with_return_value = warn_on_generator_with_return_value_stub
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星