为什么还是报错了

为什么还是报错了

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)

https://img1.sycdn.imooc.com//climg/64d326e909d4c28417590630.jpg

正在回答 回答被采纳积分+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 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师