豆瓣模拟登陆

本文介绍了一种使用Python实现豆瓣网站自动化登录的方法,包括模拟headers、处理验证码及构造表单数据等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、模拟headers
这里写图片描述

2、登陆豆瓣,查看并构造表单
这里写图片描述

两种实现方式,一种普通,一种使用session

import requests
from bs4 import BeautifulSoup
from urllib.request import urlretrieve

login_url = 'https://accounts.douban.com/login'  # 登陆网址
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
    'Host':'accounts.douban.com',
    'Referce':'https://www.douban.com/',   
}  # 模拟headers

# s = requests.session()  # 创建session
# s.headers.update(headers)  # 之后会都会带上headers

res = requests.get(login_url, headers=headers)
# res = s.get(login_url)  # 不用再模拟headers

res.encoding = 'utf-8'
print(res.status_code)
soup = BeautifulSoup(res.text, 'lxml')
captcha = soup.find_all('div', class_='item item-captcha')
captcha_id = captcha[0].find_all('input')
captcha_id = captcha_id[1]['value']  # 得到captcha-id
if len(captcha):  # 如果存在验证码
    captcha_url = captcha[0].div.img['src']  # 得到验证码图片地址
    urlretrieve(captcha_url, 'd:/captcha.jpg')
    captcha_solution = input('Please input captcha:\n')
    form_data = {
    'source':'index_nav',
    'redir':'https://www.douban.com/',
    'form_email':'',
    'form_password':'',
    'captcha-solution':captcha_solution,
    'captcha-id':captcha_id,
    }  # 构造表单
else:
     form_data = {
    'source':'index_nav',
    'redir':'https://www.douban.com/',
    'form_email':'',
    'form_password':'',
    }
res_login = requests.post(login_url, headers=headers, data=form_data)
# res_login = s.post(login_url, data=form_data)

res_login.encoding = 'utf-8'
print(res.status_code)
soup = BeautifulSoup(res_login.text, 'lxml')
print(soup)
模拟登录豆瓣网站并爬取数据通常涉及以下几个步骤: 1. **准备工具**: - Python环境(如:Python 3.x) - 爬虫库:如requests、BeautifulSoup、selenium等(用于发送HTTP请求、解析HTML) - 可能需要的:验证码识别工具(如tesseract-ocr)如果页面有验证码 2. **获取登录页面信息**: 使用requests.get登录页URL获取登录页面源码,分析登录表单字段,包括用户名、密码输入框和登录按钮等。 3. **构造登录请求**: 构造包含账号和密码的登录数据(通常是以form-data或json格式),比如`{"username": "your_username", "password": "your_password"}`。 4. **模拟登录**: - 如果是简单的HTML表单,直接POST登录数据到登录API。 - 如果有验证码,可能需要用selenium打开浏览器,手动输入验证码后再提交。 5. **设置cookie**: 登录成功后,获取登录后的cookie,这是保持会话状态的关键。 6. **数据抓取**: 使用相同的工具(加上cookie)访问目标数据页面,通过解析返回的HTML获取所需的数据。 7. **保存或处理数据**: 将爬取的数据存储到文件、数据库或者进一步进行清洗、分析。 ```python import requests from bs4 import BeautifulSoup # 需要注意替换为实际的用户信息和请求头 login_url = 'https://accounts.douban.com/login' data = { 'name': 'your_username', 'password': 'your_password', # 根据实际情况检查是否需要填充更多登录字段 } # 发送登录请求 with requests.post(login_url, data=data, 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.3'} ) as response: if response.status_code == 200: cookies = response.cookies # 进行数据抓取... soup = BeautifulSoup(response.text, 'html.parser') # 提取数据... else: print('Login failed with status code:', response.status_code) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值