Python爬虫

Python爬虫 知识量:11 - 28 - 71

9.1 处理登录表单><

处理登录表单- 9.1.1 -

在Python爬虫中处理登录表单需要一些额外的步骤,因为登录通常需要用户名和密码等凭据。下面是一个简单的示例,演示了如何使用Python和requests库处理登录表单:  

import requests  
from bs4 import BeautifulSoup  
  
# 登录URL  
login_url = 'https://example.com/login'  
  
# 登录凭据  
username = 'your_username'  
password = 'your_password'  
  
# 发送GET请求获取登录页面  
response = requests.get(login_url)  
  
# 解析HTML页面  
soup = BeautifulSoup(response.text, 'html.parser')  
  
# 查找表单的隐藏字段(如果存在),这通常是用来验证CSRF token的  
hidden_fields = soup.find('form').find_all('input', {'type': 'hidden'})  
  
# 构建POST请求数据,包括隐藏字段和用户名/密码字段  
payload = {}  
for hidden_field in hidden_fields:  
    payload[hidden_field['name']] = hidden_field['value']  
payload['username'] = username  
payload['password'] = password  
  
# 发送POST请求进行登录  
response = requests.post(login_url, data=payload)  
  
# 检查响应状态码,确认是否登录成功  
if response.status_code == 200:  
    print("登录成功!")  
else:  
    print("登录失败!")

在这个示例中,首先发送一个GET请求来获取登录页面。然后,解析HTML页面以查找表单的隐藏字段(如果有的话),这些字段通常用于验证CSRF token。接下来,构建POST请求数据,包括隐藏字段和用户名/密码字段。最后,发送POST请求进行登录,并检查响应状态码以确认是否登录成功。

处理cookies- 9.1.2 -

在Python爬虫中处理cookies可以让网页记住登录状态。在浏览器中登录一个网站时,服务器会发送一个cookie给你,这个cookie包含了一个唯一的标识符,用于识别你的会话。

在Python爬虫中,可以使用requests库来发送请求并处理cookies。下面是一个简单的示例代码,演示了如何使用requests库来处理cookies:

import requests  
  
# 登录URL  
login_url = 'https://example.com/login'  
  
# 登录凭据  
username = 'your_username'  
password = 'your_password'  
  
# 发送GET请求获取登录页面  
response = requests.get(login_url)  
  
# 解析HTML页面  
soup = BeautifulSoup(response.text, 'html.parser')  
  
# 查找表单的隐藏字段(如果存在),这通常是用来验证CSRF token的  
hidden_fields = soup.find('form').find_all('input', {'type': 'hidden'})  
  
# 构建POST请求数据,包括隐藏字段和用户名/密码字段  
payload = {}  
for hidden_field in hidden_fields:  
    payload[hidden_field['name']] = hidden_field['value']  
payload['username'] = username  
payload['password'] = password  
  
# 发送POST请求进行登录  
response = requests.post(login_url, data=payload)  
  
# 检查响应状态码,确认是否登录成功  
if response.status_code == 200:  
    print("登录成功!")  
else:  
    print("登录失败!")  
  
# 保存cookies信息到文件中,方便后续请求使用  
with open('cookies.txt', 'w') as f:  
    f.write(response.cookies.get_dict()['sessionid'])

在这个示例中,首先发送一个GET请求来获取登录页面。然后,解析HTML页面以查找表单的隐藏字段(如果有的话),这些字段通常用于验证CSRF token。接下来,构建POST请求数据,包括隐藏字段和用户名/密码字段。最后,发送POST请求进行登录,并检查响应状态码以确认是否登录成功。

在登录成功后,将响应中的cookies信息保存到名为cookies.txt的文件中。这样,在后续的请求中,可以读取这个文件中的cookies信息,并将其添加到请求中,以便让服务器识别身份。可以使用requests.Session()来创建一个会话对象,并将cookies信息添加到该对象中,这样就可以在后续的请求中自动处理cookies了。