Python网络数据采集的登录采集处理|第08天
优采云 发布时间: 2020-08-08 06:41用户: 您好,我是森林
日期: 2018-04-08
标记: “ Python网络数据采集”
网络采集文章
为Python网络数据采集创建采集器
Python网络数据采集的HTML解析
开始采集Python网络数据采集
使用API进行Python网络数据采集
用于Python网络数据采集的存储数据
读取文件以进行Python网络数据采集
Python网络数据采集的数据清理
处理用于Python网络数据采集的自然语言
登录采集处理
如果我们采集的网站要求我们登录以获得所需的数据,则我们需要进一步处理登录问题.
登录的原理非常简单,即前台将数据传输到服务器进行验证. 传输方式很多,例如GET和POST. 页面表单基本上可以看作是用户提交POST请求的一种方式,服务器可以理解和使用该请求方法.
Python请求库
除了Python标准库urllib库外,还有第三方库可供选择,例如Requests. 一个Python第三方库,主要擅长处理复杂的HTTP请求,cookie,标头(响应标头和请求标头).
项目地址:
安装方法也很简单. 例如,pip安装或下载源安装.
源代码地址:
提交表格
提交表单通常以HTML格式实现,并且大多数表单也以这种方式提交. 例如:
Nickename:
username:
我们使用Requests库在Python中提交非常简单.
import requests
params = {'name': 'Ryan', 'username': 'Mitchell'}
r = requests.post("http://pythonscraping.com/files/processing.php", data=params)
print(r.text)
输入单选按钮,复选框等.
无论表单字段的外观多么复杂,仍然只需要注意两件事: 字段名称和值. 通过查看name属性的源代码,可以轻松获得字段名称. 该字段的值有时会更复杂,并且可能在提交表单之前通过JavaScript生成.
我们可以通过捕获数据包或浏览器的网络请求信息来判断,例如:
https:chensenlin.cn?c=hello&m=senlin
Python需要理解为:
{'c':'hello','m':'senlin'}
有关具体查看方法,请参见下图:
图片
提交文件或图像
提交HTML文件时,您需要添加参数enctype =“ multipart / form-data”来声明这是文件上传的类型. 同时,输入类型为文件.
uploadFile:
提交:
类似地,Python请求库按如下方式处理这种形式:
import requests
files = {'uploadFile': open('../files/Python-logo.png', 'rb')}
r = requests.post("https:chensenlin.cn?c=filename&m=upload",files=files)
print(r.text)
处理登录名和cookie
大多数网站使用cookie来跟踪用户是否已登录. 网站验证了您的登录凭据后,会将其保存在浏览器的Cookie中,该cookie通常收录服务器生成的令牌,登录有效期和状态跟踪信息. 网站将使用此cookie作为信息验证的凭证,并在您浏览网站的每个页面时将其显示在服务器上.
基于上述逻辑,使用Requests库跟踪cookie的代码示例也相对简单:
import requests
params = {'username': 'demochen', 'password': 'password'}
r = requests.post("http://pythonscraping.com/pages/cookies/welcome.php", params)
print("Cookie is set to:")
print(r.cookies.get_dict())
print("-----------")
print("Going to profile page...")
r = requests.get("http://pythonscraping.com/pages/cookies/profile.php",cookies=r.cookies)
print(r.text)
但是,也有一种登录方法,但是Requests库的会话功能也非常方便. 具体细节与Cookie相似,但是可以进行详细说明或查看文档以了解详情.
import requests
session = requests.Session()
params = {'username': 'username', 'password': 'password'}
s = session.post("http://pythonscraping.com/pages/cookies/welcome.php", params)
print("Cookie is set to:")
print(s.cookies.get_dict())
print("-----------")
print("Going to profile page...")
s = session.get("http://pythonscraping.com/pages/cookies/profile.php")
print(s.text)
值得注意的是,还有另一种使用HTTP基本访问身份验证登录的方法. Requests库具有一个专门用于处理HTTP身份验证的auth模块: