qq_33013411 2021-05-18 10:19 采纳率: 100%
浏览 327
已采纳

爬虫爬取京东怎么实现翻页

from selenium import webdriver import re import time driver=webdriver.Firefox() driver.get("https://item.jd.com/12811614.html") x = 0 for j in range(0,10): time.sleep(2) wangye=driver.page_source asdfg=re.findall('

(.*?)

',wangye,re.S) for i in asdfg: x += 1 print(str(x)+'、'+i+'\n'+'='*150) driver.execute_script("window.scrollTo(0,document.body.scrollHeight);") time.sleep(2) more = driver.find_element_by_css_selector('div.ui-page>a')[i+1] more.click() driver.close()
  • 写回答

3条回答 默认 最新

  • 关注

    这是我之前写的,你看一下

    # 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)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置