weixin_48402155 2021-06-10 10:43 采纳率: 100%
浏览 58
已采纳

兄弟们帮帮忙期末作业??

小白啥也不会,用爬虫软件的

  • 写回答

4条回答 默认 最新

  • 关注

    这是我之前做爬取京东商品评论的代码,可以参考下,自己改下路径就行了

    # coding=utf-8
    import requests
    import re
    import io
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    temp='https://item.jd.com/100004325476.html'
    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 url(temp):
        jd_id=re.findall("\d+",temp)[0]  # 提取商品id
        # 替换京东商品js中一般的Request URL模板
        l='https://club.jd.com/comment/productPageComments.action?productId=xxx&score=0&sortType=5&page={page_num}&pageSize=10&isShadowSku=1&rid=0&fold=1'
        l=l.replace('xxx', jd_id)  # 替换id
        return l
    
    def init():
            # 实例化类的时候运行初始化函数
            # 打开文件
            file_name = 'jd_commet'
            print '正在打开文件'+file_name+'txt文件!'
    
    def parse_one_page(url,fp):
            # 指定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'
            # 发起请求
            response = requests.get(url, headers=headers)
            # 获取响应
            js_data = response.json()
            # 提取评论列表
            comments_list = js_data['comments']
    
            for comment in comments_list:
                # 评论内容
                content = comment.get('content')
                content = ' '.join(content.split('\n'))  # 处理换行符
                print(content)
                # 循环写出数据
                fp.write(u'{}\n'.format(content))
                fp.write(u"\n")  # 写入一条数据后加一行空数据
    
    def parse_max_page(l):
            fp = io.open('E:/python/jd_commet.txt', 'w', encoding='utf_8_sig')
            for page_num in range(10):  # 抓包获得最大页数  最大50页,超出自动停止
                # 指定通用的url模板
                new_url=l.format(page_num=page_num) # 把字符串替换为变量
                print '正在获取第'+str(page_num)+'页'
                # 调用函数
                parse_one_page(url=new_url, fp=fp)
            fp.close()
    
    def close_files():
            print('爬虫结束,关闭文件!')
    
    def run(temp):
        init()
        l = url(temp)
        # 开始爬虫
        parse_max_page(l=l)
        # 关闭文件
        close_files()
    if __name__ == '__main__':
        run(temp)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM