python登录豆瓣_手把手教你用python模拟登录豆瓣
最近想使用python在豆瓣电影上爬一下电影《教父》的影评,但非登录游客只能查看前10页的影评内容,如果想爬取更多影评,需要先模拟登录豆瓣。
我搜索了很多模拟登录的文章,但我由于欠缺网页方面的知识基础,并没有能够按照其步骤成功模拟登录,后来发现,是模拟登录需要提交的个人信息对应的关键字变了(后面会具体解释)。因此,我整理了一下自己模拟登录成功的详细步骤。
步骤一:安装爬虫所需的requests库
直接在命令行中输入 pip install requests,安装成功后import requests
步骤二:初始化变量
模拟登录时,我们需要先获得目标网站的网址;为了防止被识别出是爬虫,我们需要伪装自己的用户信息;我们还需要向目标网站提交个人信息(账号密码等)。
这三部分信息,我们可以用以下方式获取。
1.打开豆瓣网站,进入其登录界面,选择密码登录,输入账号和密码,注意:先不要点登录豆瓣!!!
2. 在豆瓣网登录界面,按F12打开Developer Tools,选择Network,选中Previous log,这样就可以查看我们的操作所对应的网页源代码,从而找到所需信息了。
2. 点击登录豆瓣,因为我的账号和密码是随便写的,所以登录不成功,但不影响我们查看信息。在Developer Tools界面,选择查看basic的Headers,在里面找到General下面的Request URL并复制,这才是我们模拟登录时的目标网址,而非我们平时认为的网页上的网址。
再找到Request Headers下面的User-Agent并复制,里面包含我们电脑的信息。
最后,在Form Data中找到我们的个人信息,并复制。
这样一来,需要向网站提交的信息,就搞定了。需要注意的是,豆瓣个人信息所对应的关键字不是一成不变的。在我查找资料的过程中,很多文章都说Form Data包含的信息是这样的:
这跟我们现在查看到的内容显然不同,如果使用旧的关键字提交信息肯定无法成功,因此,大家在模拟登录的过程中,最好先自己查看一下信息。
步骤三:提交登录请求
先将需要提交的请求写成代码:
url = 'https://accounts.douban.com/j/mobile/login/basic'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
data = {
'ck': '',
"name":'123456789',#用户名123456789,我瞎写的,大家填真实的就好
"password":'123456',#密码123456,我瞎写的,大家填真实的就好
'remember': 'false',
'ticket': '',
}
为了在之后爬取网页的过程中能一直保持登录状态,我们要用到requests库中的session来维持会话状态,对应的代码是:
s = requests.Session()
html = s.post(url,headers=headers,data=data)
步骤四:在登录状态下,访问豆瓣其他页面。
大家可以通过访问豆瓣个人主页,来保证自己已经成功登录。代码如下:
url = 'https://www.douban.com/people/57443010/'#这个网址是我的个人主页,大家换成自己的即可
html = s.get(url).text
print(html)
通过print(html),可以查看网页源代码,其中“个人主页”“我的订单”等都是登录后个人主页会显示的信息。当我们在网页源代码中看到如下信息的时候,就说明我们登录成功了。
步骤五:全部代码
import requests
# 用于维持登录会话,requests高级用法
s = requests.Session()
# 登录
def login():
#url ='https://accounts.douban.com/passport/login'
url = 'https://accounts.douban.com/j/mobile/login/basic'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
data = {
'ck': '',
"name":'123456789',
"password":'123456',
'remember': 'false',
'ticket': '',
}
html = s.post(url,headers=headers,data=data)
return s,html
# 获取个人信息
def get_user_data(s):
url = 'https://www.douban.com/people/57443010/'
html = s.get(url).text
#print(html)
return html
if __name__ == '__main__':
s,html1 = login()
html2 = get_user_data(s)
总结:用requests库模拟登录十分方便,主要需要注意两个问题,一是使用session来维持会话,二是自己通过Developer Tools找到网页待提交信息。
在模拟登录时还会遇到验证码等比较高级的反爬虫机制,但豆瓣暂时还不需要每次登录时提交验证码,只在登录太频繁时才需要用验证码验证,如果大家在保证代码无误的情况下登录失败,可以考虑等待一段时间再尝试。
python登录豆瓣_手把手教你用python模拟登录豆瓣相关推荐
- 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...
话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...
- python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码
原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...
- 用python画皇冠_手把手教你用 Python 绘制酷炫的桑基图!
原标题:手把手教你用 Python 绘制酷炫的桑基图! 作者 | 周志鹏 责编 | 郭 芮 最近,不止一次收到小伙伴的截图追问: "这个图叫什么???" "这个图真好看! ...
- python文本分类_手把手教你在Python中实现文本分类.pdf
手把手教你在Python 中实现文本分类(附代码.数 据集) 引言 文本分类是商业问题中常见的自然语言处理任务,目标是自动将文本文件分到一个 或多个已定义好的类别中.文本分类的一些例子如下: • 分析 ...
- 如何用python开发游戏_手把手教你用Python完成一个控制台小游戏-阿里云开发者社区...
很多人想学Python程序设计或者已经了解过一点Python程序设计基础,却没办法开发出一个项目. 今天,通过演示一个简单的控制台小游戏制作,手把手教你如何用Python编写一个游戏程序,即便你是个新 ...
- 利用python编写祝福_手把手|教你用Python换个姿势,送狗年祝福语
春节既是一个阖家团圆的节日,也是一个集中问候亲朋好友.了解近况的机会.但是也有很多人过年也不能聚在一起,所以就会会选择发短信这一方式来表达自己的祝福.其中大多人都是复制转发,让人一眼就看穿,显得自己在 ...
- python广州地图_手把手教你用Python+可视化工具制作漂亮地图
作者:J哥 这次呢,我想讲讲地图可视化的内容,以前我也写过用Python的内置库绘制地图,但总感觉不够美观.如何才能在短时间内制作漂亮的可视化地图呢,我觉得Python+可视化工具是不错的选择. 以下 ...
- python画图宽度_手把手教你用 Python 绘制酷炫的桑基图!
作者 | 周志鹏 责编 | 郭 芮 最近,不止一次收到小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?" ...... 笔者本没有 ...
- python私人定制_手把手教你学python第十五讲(魔法方法续私人“定制”)
python无处不对象的深刻理解 前面写了这么多,我觉得有必要从一个大的层面,也就是OO来看问题的本质.只要你调用对象的语法是合乎python的习惯的,那就是可以的,我们以前从来没有像下面这么写过,对 ...
- python 人脸识别_手把手教你用python实现人脸识别,识别率高达99.38%
之前本人在实训时需要实现人脸识别这个功能,当时是借助百度的人脸识别api,这个需要注册账号,还需要用到密钥.操作起来也不麻烦,代码也不多.就是如果网速跟不上,返回的结果时,速度有点慢.当时也没那么在意 ...
最新文章
- 在redhat9上安装firefox
- micropython是啥 知乎_micropython入门教程
- //随机生成1位大写字母\小写字母\数字
- STM32常见错误error: #268: declaration may not appear after executable statement
- 第六届蓝桥杯试题c/c++B组5
- 机器人学基础(三):机器人运动学
- 2013 Esri全球用户大会QA之元数据支持
- ZCU106开发板MIPI摄像头开发的示例程序【详细讲解】
- base URL是什么意思?干什么用的?
- 物联网毕设(智能灌溉系统 -- Android端)
- 关于hive当中的double的数据类型
- 如何使用帆软BI直接分析明道云数据
- Dispatch I/O
- MATLAB app designer/GUI 学习笔记(一)
- ERP销售人员快速上手
- EPC附着及IMS PDN建立过程
- 计算机毕业设计JAVA海滨体育馆管理系统mybatis+源码+调试部署+系统+数据库+lw
- 晋升答辩,leader嫡系拿着我和另一个同事的项目去答辩,关键我们三个人是同一组答辩,这也太恶心了吧?...
- MMC卡的安装与使用注意事项
- 郭明錤连发8条猛料!爆苹果MR头显最新进展