五秒速的刀 2021-04-02 09:02 采纳率: 100%
浏览 278
已采纳

scrapy爬虫翻页操作,python+scrapy

https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1617330627112&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=python&pageIndex=1&pageSize=10&language=zh-cn&area=cn

在scrapy中怎么用代码对这个链接进行翻页操作,爬取数据

怎么样对红线部分进行翻页操作,或者是指定页数的爬取,多页爬取

 

  • 写回答

3条回答 默认 最新

  • 白驹_过隙 算法领域新星创作者 2021-04-03 09:15
    关注
    # 导入所需库
    import requests
    
    class Jdcomment_spider(object):
    
        # 请求头
        headers = {
            'User-Agent': 'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 89.0.4389.90Safari / 537.36'
        #请求的客户端信息
        }
    
        def __init__(self, file_name='jd_commet'):
            # 实例化类的时候运行初始化函数
            # 打开文件
            self.fp = open(f'./{file_name}.txt', 'w', encoding='utf-8')
    
            print(f'正在打开文件{file_name}.txt文件!')
    
    
        def parse_one_page(self, url):
            # 指定url
            #url='https://club.jd.com/comment/productPageComments.action?productId=100017543968&score=0&sortType=6&page=1&pageSize=10&isShadowSku=100016034372&rid=0&fold=1'
            # print(url)
    
            # 发起请求
            response = requests.get(url, headers=self.headers)
            # 获取响应
            js_data = response.json()
    
            # 提取评论列表
            comments_list = js_data['comments']
    
            for comment in comments_list:
                # 商品id
                goods_id = comment.get('id')
                # 用户昵称
                nickname = comment.get('nickname')
                # 评分
                score = comment.get('score')
                # 商品尺寸
                productSize = comment.get('productSize')
                # 商品颜色
                productColor = comment.get('productColor')
                # 评论时间
                creationTime = comment.get('creationTime')
                # 评论内容
                content = comment.get('content')
                content = ' '.join(content.split('\n'))  # 处理换行符
    
                print(content)
    
                # 循环写出数据
                self.fp.write(f'{goods_id},{nickname},{score},{productSize},{productColor},{creationTime},{content}\n')
    
    
        def parse_max_page(self):
            for page_num in range(50):  # 抓包获得最大页数
                # 指定通用的url模板
                new_url = f'https://club.jd.com/comment/productPageComments.action?productId=100017543968&score=0&sortType=6&page={page_num}&pageSize=10&isShadowSku=100016034372&rid=0&fold=1'
    
                print(f'正在获取第{page_num}页')
                # 调用函数
                self.parse_one_page(url=new_url)
    
    
        def close_files(self):
            self.fp.close()
            print('爬虫结束,关闭文件!')
    
    
    if __name__ == '__main__':
        # 创建实例对象
        jd_spider = Jdcomment_spider()
        # 开始爬虫
        jd_spider.parse_max_page()
        # 关闭文件
        jd_spider.close_files()

    设置一个函数,令page={page_num},再循环page_num即可,这是我爬取的例子,希望对你有帮助

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 潜在扩散模型的Unet特征提取
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部