为什么不能获取所有的数据啊,就返回了第一页的数据

为什么不能获取所有的数据啊,就返回了第一页的数据

import scrapy
import re

class AppSpider(scrapy.Spider):
    name = "app"
    allowed_domains = ["search.jd.com"]
    start_urls = ["https://list.jd.com/list.html?cat=1123713%2C3258&page=1&s=1&click=0"]

    def parse(self, response):
        lis = response.xpath('//*[@id="J_goodsList"]/ul/li')
        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)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小猿 2023-08-09 10:55:24

同学,你好!允许的域名不正确,应该写list.jd.com。同学第一次爬取的是start_urls的地址,yield 第二次爬取时 allowed_domains会过滤允许爬取的域名,也就是只允许爬取search.jd.com开头的链接,同学第二页是list.jd.com/list.html所以不会爬取第二页

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


祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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