Python爬虫(三):真·解决动态网页

前言

  • 上一篇博文中, 笔者采用了selenium驱动chrome来抓取网页, 总结来看及其低效…
  • 想了一下, 不能这样搞, 他要刷新局部界面肯定是要利用JavaScript调用已经写好的json的. 通常来说不会有前端选择瞎搞地址. 如果能观察出那个json的地址特点, 就到了ButifulSoup为所欲为的时间辣(●’◡’●)
  • 对于json参数偏移量不规律的网页,那当然是 直接打死 ,哦不, 仔细观察. 对于一个正常的前端同学来说, 不规律的json只可能是有限的, 我不做人啦,jojo!. 我们只要把有限的偏移量写成一个字典(dic)就大功告成

前期准备

  • Chrome浏览器
  • Python3.7
  • requests, BeautifulSoup4模块
  • 一点点耐心以及正常的视力

流程分析

  • chrome浏览器打开目标网页,
  • 检查元素 F12, CTRL+ shift+i, CTRL+shift+c爱用那个用哪个
  • 继续加载内容,注意观察network栏下的xhr文件

在这里插入图片描述

  • 很明显,那个since=就是我们要找的
    *点击展开,根据 Query string 构造parameter参数字典
    在这里插入图片描述
  • requests 负责请求,bs4 为所欲为

代码实现


json_url = 'https://富强民主文明和谐'
#无规则偏移量,自行逆向分析得到偏移量字典
since_list = [26961.554, 26961.474, 26961.419, 26961.346]

#实现提取json,加载动态内容,但是封装性不好,不能重复利用
def getMorePages(list,count=1):

    params_list = []
    for i in range(count):
        keyword=str(list[i])
        params_list.append({
            'since': keyword,
            'grid_type': 'flow',
            'sort': 'hot',
            'tag_id': '399',
        })
    url = json_url
    for i in params_list:
        req=requests.get(url, params=i).content
        soup=BeautifulSoup(req,'lxml')
        getURL(soup)

尾声

很显然,这样做效率会高很多 发现json规律成为了木桶的最短板,为了避免那个网站被薅羊毛,我就手动屏蔽惹OTZ…
另外,代码也只放入了相关的一部分,有兴趣的同学可以尝试结合上一篇,整合功能鸭~
Good night!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值