一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
动态页面采集与Python实现
内容的生成与交互内容生成方式服务器端客户端动态交互URL传递请求参数通过Cookie获取命令参数Ajax动态页面采集技术知识补充类型使用带参数的URL页面带编码实现方式利用Cookie和Sessioncookie的获得/构造cookie传递到服务器Ajax实现方式模拟浏览器实现方式模拟特定浏览器的header使用浏览器内核页面结构分析编程实现
内容的生成与交互
内容生成方式
服务器端
- 主要内容在数据库
- 页面的结构和表现方式在Web服务器
- jsp等语言编写连接数据库、查询数据库、生成用户的html文档
- 另一种方法,在html文档中嵌入SSI指令,默认扩展名.stm、.stm、.stml
<!-- # include file = “文件名”-->在文档合适方式插入文件指令
客户端
- 轻量级、局部的
- 需要嵌入一定的脚本和插件
动态交互
URL传递请求参数
URL:
协议://域名:端口号/目录/文件名.文件后缀?参数1=值#标志&参数2=值#标志- ?表示第一个参数的开始
- #表示标签,一个Web页面中的特定部分
- 参数=值,不同参数用&连接
通过Cookie获取命令参数
记录了C/S交互参数,自动获取Cookie
Ajax
允许请求局部内容,其他部分不变
- 更新触发条件
- 页面中的定时器
- 鼠标或键盘事件驱动
动态页面采集技术
知识补充
requests.post() 是用于发送 HTTP POST 请求的 Python requests 库中的一个函数。以下是其主要参数:- url (str):
- 指定要发送请求的目标 URL。
- data (dict, list of tuples, bytes, or file-like object):
- 请求中要包含的数据。可以是字典、元组列表、字节或类文件对象。
- json (object):
- 以 JSON 格式发送的数据。如果设置了这个参数,它将覆盖
data参数。
- headers (dict):
- 用于设置 HTTP 请求头的字典。
- params (dict or tuple):
- 作为 URL 查询参数发送的字典或元组。
- auth (tuple):
- HTTP 认证的元组,通常是
(username, password)。
- cookies (dict):
- 要随请求一起发送的 cookies 字典。
- files (dict):
- 要上传的文件,以字典形式提供,其中键是字段名称,值是文件名或文件对象。
- timeout (float or tuple):
- 请求超时时间。可以是一个浮点数,也可以是一个包含连接和读取超时的元组。
- allow_redirects (bool):
- 是否允许重定向,默认为 True。
- proxies (dict):
- 代理字典,用于指定请求时要使用的代理。
- verify (bool or str):
- 用于指定是否验证服务器的 SSL 证书。可以是布尔值或字符串(指定证书路径)。
- stream (bool):
- 如果为 True,则内容不会立即下载。可以通过迭代响应的内容属性来手动处理流。
- cert (str or tuple):
- 客户端证书文件路径,也可以是包含证书和密钥文件路径的元组。
- hooks (dict):
- 钩子函数的字典,允许用户在请求的不同阶段注册回调函数。
- params (dict or tuple):
- 作为 URL 查询参数发送的字典或元组。
- 其中只有URL是必须有的参数
类型
- 构造带参数的URL,利用参数动态请求
- 构造Cookie携带参数,利用HTTP头部传递动态请求
- 离线分析Ajax的动态请求,使用动态页面采集或Cookie、POST发送动态请求
- 模拟浏览器技术
使用带参数的URL
页面带编码
- 模拟编码
- 主要有utf-8、gbk、gb2312、unicode之间的转换
- 编码转换
- 仿照目标代码,比如\转换成%
实现方式
- url参数放在字典,通过字典和字符串运算拼接带参数的url
利用Cookie和Session
cookie的获得/构造
浏览器→开发者模式→访问网站→获取Cookie→存放Cookie到一个txt文件


cookie传递到服务器
- cookie中存的是键值对,所以可以用字典存放
- Cookie传递的是HTTP协议的请求头
- 需要使用request.get(“url”,cookies=cookies)中指定cookies的属性值
- 可以创建Session把cookie信息放到服务器,减少访问次数降低cookie信息泄露风险
- 需要使用request.session().get(URL)
Ajax
寻找Ajax动态加载的URL
- 重复执行的JS其中的URL
- 打开url返回的是多个键值对
实现方式




- 一些页面还支持POST提交向服务器发送请求的动态参
- 把
Pyload数据封装成json dataj=json.dumps(payload)- 以post方法发送url请求
requests.post(url, data=dataj, header=payloadHeader)
模拟浏览器
实现方式
- 模拟特定浏览器的header
- 使用浏览器内核
- 直接在浏览器上开发组件
模拟特定浏览器的header
requests.get(url,headers=http_headers)- 其中
http_headers是字典,存放User-Agent、Accpet等键值对 User-Agent存放的是头部文件
使用浏览器内核
- pip install selenium
- 下载chromedriver,与浏览器版本对应,解压后放到浏览器安装目录
- 将chromedriver.exe所在的目录名添加到操作系统的path环境变量中
页面结构分析
- 通过页面源代码寻找界面控件对应的控件名称
编程实现
Prev
普通爬虫页面采集技术与Python实现
Next
Web信息提取与Python实现
Loading...