python抓取动态网页( 学习使用Python爬取动态网页内容时需要先学习动态网页的基本概念)
优采云 发布时间: 2021-09-28 21:15python抓取动态网页(
学习使用Python爬取动态网页内容时需要先学习动态网页的基本概念)
Python爬虫学习动态网页爬虫的3个基础
由于静态网页和动态网页在原理上的差异,在学习使用Python抓取动态网页内容时,需要了解动态网页的基本概念,了解动态网页与静态网页的区别。
动态网页技术AJAX技术的基本原理
即异步 JavaScript 和 XML,通过后台和服务器之间的少量数据交换,可以异步更新网页。AJAX 技术可以在不重新加载整个网页的情况下部分更新网页。
AJAX技术节省了网页重复内容的下载,节省了流量,因此得到了广泛的应用。
↓AJAX技术的应用
使用 AJAX 技术动态识别的内容(如网页评论等)在 HTML 文件中由一段 JavaScript 代码表示。
· 抓取 AJAX 加载的动态网页
①浏览器评论元素解析地址
②使用Selenium模拟浏览器爬行
浏览器检查元素使用浏览器检查元素解析真实地址
①在指定网页下打开浏览器“检查元素”功能的窗口视图
②选择网络子标签,刷新网页——此时网络标签会显示从网络服务器获取的所有文件(此过程为“抓包”,可以过滤掉所有文件中的目标文件获得的数据)
③通常这些数据都是以json文件格式获取的,选择网络中的XHR子标签,继续过滤获取目标文件数据的URL
④ 定义link为目标URL,使用新创建的请求对象抓取目标内容
⑤ 使用json库解析数据,进一步提取目标数据
——使用json.loads()将数据转换为json格式(注意r.text不能直接转换为json.load,需要中间转换过程)
——使用json数据结构提取列表comment_list,使用for循环提取文本并输出需要打印的信息到控制台
①浏览器解析真实地址,使用requests抓取信息并输出r.text
import requests
link = """https://api-zero.livere.com/v1/comments/list?callback=jQuery112406453811568012512_1611903863418&limit=10&repSeq=4272904&requestPath=/v1/comments/list&consumerSeq=1020&livereSeq=28583&smartloginSeq=5154&code=ce14917d979b4014a8194adf&_=1611903863420"""
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers= headers)
print (r.text)
②解析真实地址,使用json转换数据进行初步分析,循环输出评论内容:
import requests
import json
link = """https://api-zero.livere.com/v1/comments/list?callback=jQuery112406453811568012512_1611903863418&limit=10&repSeq=4272904&requestPath=/v1/comments/list&consumerSeq=1020&livereSeq=28583&smartloginSeq=5154&code=ce14917d979b4014a8194adf&_=1611903863420"""
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers= headers)
# 获取 json 的 string
json_string = r.text
json_string = json_string[json_string.find('{'):-2]
json_data = json.loads(json_string)
comment_list = json_data['results']['parents']
for eachone in comment_list:
message = eachone['content']
print (message)
URL 中的重要变量
通过解析真实地址,可以发现URL中有一些重要的变量类型:
①limit:每个网页目标内容的最大值