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找到网页待提交信息。

在模拟登录时还会遇到验证码等比较高级的反爬虫机制,但豆瓣暂时还不需要每次登录时提交验证码,只在登录太频繁时才需要用验证码验证,如果大家在保证代码无误的情况下登录失败,可以考虑等待一段时间再尝试。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值