Python爬虫入门——3.2 动态网页爬虫

当你搜索百度图片时(百度图片),你会发现,当你向下滑动鼠标,就会自动加载下一页的图片数据,但是网页的URL却没有改变。从而你就无法通过一般的构造URL的方法来抓取网页数据。这是由于网页使用了异步加载技术。

异步加载技术

传统的网页如果需要更新网页信息就需要重新加载整个网页的数据信息。因此会存在加载速度慢的情况从而导致用户体验感差。而采用了异步加载技术来加载网页数据就会通过后台与服务器之间少量的数据交换就可以完成数据更新。

接下来我们介绍如何抓取使用异步加载技术的网页数据。以简书网为例(https://www.jianshu.com/u/9104ebf5e177)网页为《从零开始学Python网络爬虫》作者罗攀的简书主页。我们的目的是爬取用户文章题目

1、在Chrome浏览器按F12或者在动态上右键->检查,不断下滑浏览其他动态发现 网页的URL一直是https://www.jianshu.com/u/9104ebf5e177没有发生改变。选择Network->XHR->Response选项会观察到额网页返回的是XML文件。

2、不断下滑网页可以观察Name栏的数据,可以获得前几页的URL

https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page=2/u

https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page=3/u

https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page=4/u

3、通过分析网页数据我们可以得到有规律的URL,然后再进行数据爬取就容易多了。下面上代码:

import requests
import re
#构造URL列表
urls = ['https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page={0}/u'.format(str(i)) for i in range(1,20)]
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
for url in urls:
    res = requests.get(url,headers = headers)
    selsctor = re.findall('<a class="title" target="_blank" href="/p/.*?">(.*?)</a>',res.content.decode('utf-8'),re.S)
    for i in selsctor:
        print(i)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值