python抓取动态网页( 学习使用Python爬取动态网页内容时需要先学习动态网页的基本概念)

优采云 发布时间: 2021-09-28 21:15

  python抓取动态网页(

学习使用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:每个网页目标内容的最大值

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线