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

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

异步加载技术

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

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

Python爬虫入门——3.2 动态网页爬虫_第1张图片

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

Python爬虫入门——3.2 动态网页爬虫_第2张图片

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('(.*?)',res.content.decode('utf-8'),re.S)
    for i in selsctor:
        print(i)

 

你可能感兴趣的:(Python爬虫入门,Python爬虫)