如何使用 Python 实现模拟登录和爬取网页时的代理设置

2023-04-19 00:00:00 如何使用 模拟 网页时

一、模拟登录

模拟登录通常需要以下步骤:

  1. 发送登录页面请求,获取页面信息
  2. 解析页面信息,获取登录所需信息(如验证码、参数)
  3. 构造登录请求,携带登录所需信息(如用户名、密码、验证码)
  4. 发送登录请求,获取登录结果
  5. 根据登录结果判断是否登录成功

下面是一个使用 requests 库模拟登录的示例:

import requests
from bs4 import BeautifulSoup

# 定义登录地址和用户名、密码
login_url = 'http://pidancode.com/login'
user = 'your_username'
password = 'your_password'

# 发送登录页面请求,获取页面信息
session = requests.session()
response = session.get(login_url)
soup = BeautifulSoup(response.text, 'html.parser')

# 解析页面信息,获取登录所需信息(如 CSRF_Token、验证码)
csrf_token = soup.find('input', {'name': 'csrf_token'}).get('value')
captcha_url = soup.find('img', {'id': 'captcha_img'}).get('src')

# 下载验证码图片
captcha_response = session.get(captcha_url)
with open('captcha.jpg', 'wb') as img_file:
    img_file.write(captcha_response.content)

# 人工识别验证码
captcha = input('请输入验证码:')

# 构造登录请求,携带登录所需信息(如用户名、密码、验证码)
data = {
    'csrf_token': csrf_token,
    'username': user,
    'password': password,
    'captcha': captcha
}
response = session.post(login_url, data=data)

# 发送登录请求,获取登录结果
if '登录成功' in response.text:
    print('登录成功')
else:
    print('登录失败')

二、代理设置

如果需要爬取的网站对 IP 有限制,或者需要绕过某些限制,可以通过使用代理来解决。Python 中的 requests 库支持使用代理,只需要通过设置 proxies 参数即可。

以下是一个使用代理爬取页面的示例:

import requests

# 定义代理地址
proxy = 'http://127.0.0.1:8888'

# 定义目标网站地址
target_url = 'http://pidancode.com'

# 定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}

# 设置代理
proxies = {
    'http': proxy,
    'https': proxy
}

# 发送带代理的请求,获取页面信息
response = requests.get(target_url, headers=headers, proxies=proxies)

# 输出页面内容
print(response.text)

注意,使用代理时需要确保代理地址正确,并且代理是否需要认证等信息已经设置正确。否则可能会导致爬取失败或者访问被限制的情况。

相关文章