对于静态网页,爬虫的时候可以直接将页面的HTML网页源码下载下来,然后利用Beautiful Soup库进行网页解析,获得网页内的信息。

而对于动态加载或异步加载的网页,会出现直接下载网页后页面信息不全的情况,这时可以通过浏览器的“开发人员工具”中的“网络”工具,查看网页加载过程中的网络连接情况,分析找到其中获取数据的链接,通常网页会通过get请求获取一个json,然后通过对json的解析,完成信息的获取,然后通过一系列的过程(可以是JavaScript程序)完成页面的更新显示。

因而在动态加载的网页爬虫时,我们只需要像浏览器那样,通过特定的get链接,获取到json,然后对json进行解析即可。

在python中对json进行解析时可以利用json库中的loads函数完成,关键语句如下:

import json
import requests
url= 'https://这里是获取json的网页链接,通过网络连接分析获得'
# 设置请求网络连接时的User-Agent,不设置容易被网站拦截
headers={'User-Agent':'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E)'}
# 发起网页连接请求
response=requests.get(url,headers=headers)
# 获取响应内容(json的文本形式)
jsonText = response.text
# 通过loads函数解析获取得到的json文本
jsonData = json.loads(jsonText)
# 解析后的数据会变为python中的字典类型的数据,因此可以像字典一样对json中的内容进行读取
dataList =jsonData['data']['searchResult']['dataResults']
# 同样的,如果原始json中包含了list,解析后字典里相应内容也是以list的形式出现,因此可以通过list元素的序号访问其中的元素
zcTitle=jsonData[0]

tips:json的可视化分析可以通过网上的json在线解析工具完成,我用的是EBJSON的json在线解析工具【https://www.bejson.com/explore/index_new/】,这个工具的优点在于其可以显示json的中的JS类型以及数组索引,对于分析json还是比较有帮助的。


本文来自博客园,作者:逸笔
转载请注明原文链接:https://www.cnblogs.com/1blog/p/15186567.html