Python 豆瓣模拟登录及乱码问题解决

本文探讨了在使用Python模拟豆瓣登录过程中遇到的参数错误、乱码问题及登录页面定位问题,通过调整headers中的Accept-Encoding和Host字段,解析了如何正确发送FormData请求并获取预期页面内容。

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

豆瓣登录页面

开发者模式下,输入账号和密码,点击登录豆瓣,可得到一个post请求的网址,如图:

登录请求网址:https://accounts.douban.com/j/mobile/login/basic

post请求数据格式即为 Form Data

模拟登录代码如下:

import requests

headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
}

login_url = 'https://accounts.douban.com/j/mobile/login/basic'
data = {
    'ck':'',
    'remember':'true',
    'name':'账号',
    'password':'密码'
}
session = requests.Session()
login_res = session.post(login_url,data=data,headers=headers)

# 登录后要请求的网址
url = 'https://www.douban.com/group/search?cat=1013&q=找房'
# 利用登录后的session请求网址
res = session.get(url, headers=headers)
print('res:',res.text)

此时可成功得到数据。

遇到的问题及解决办法:

1:代码请求login_url时出现“参数错误”,但postman请求可正常返回数据。

      解决方法:代码中尝试补全headers。

2:补全headers后,得到的数据是乱码。

      解决方法:查看headers中是否含有 Accept-Encoding 字段,将此字段注释或删除。

                        

3:请求得到的页面是首页,非自己请求的页面。

      解决方法:查看headers中是否含有 Host 字段,将此字段注释或删除。

                        

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值