Python爬虫笔记-豆瓣模拟登陆

URL获取

进入豆瓣登陆页面:
这里写图片描述
从中可以获悉post操作时候对应的url为https://accounts.douban.com/login

表单数据项获取

F12上述页面,填入豆瓣的账号密码(仅仅是为了post一定的数据,所以,随意的账号和密码是可以的)。查看网络的数据变化:
这里写图片描述
从上图的Headers中可以看出,需要的表单项为下述四项:
redir: https://www.douban.com/
form_email:你的账号
form_password:你的密码
login:登录

代码:

当需要验证码的时候,则需要用到BeautifulSoup模块,完整的代码如下:

# -*- coding: utf-8 -*-
__author__ = 'jason'
import requests
import html5lib
import re
from bs4 import BeautifulSoup

s = requests.Session()
url_login = 'https://accounts.douban.com/login'

formdata = {
    'redir': 'https://www.douban.com',
    'form_email': 账号,
    'form_password': 密码,
    'login': u'登陆'
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

r = s.post(url_login, data = formdata, headers = headers)
content = r.text
soup = BeautifulSoup(content, 'html.parser')
captcha = soup.find('img', id = 'captcha_image')#当登陆需要验证码的时候
if captcha:
    captcha_url = captcha['src']
    re_captcha_id = r'<input type="hidden" name="captcha-id" value="(.*?)"/'
    captcha_id = re.findall(re_captcha_id, content)
    print(captcha_id)
    print(captcha_url)
    captcha_text = input('Please input the captcha:')
    formdata['captcha-solution'] = captcha_text
    formdata['captcha-id'] = captcha_id
    r = s.post(url_login, data = formdata, headers = headers)
with open('contacts.txt', 'w+', encoding = 'utf-8') as f:
    f.write(r.text)

cookie方式

该方式则是利用上一次的登陆信息的cookie,在下一次登陆的时候,直接登陆。那么,需要先将第一次登陆时候的cookie保留。下述代码假设已经保留的对应的cookie信息:

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'}
cookies = {cookie信息}
url = 'http://www.douban.com'
r = requests.get(url, cookies = cookies, headers = headers)
with open('douban_2.txt', 'wb+') as f:
    f.write(r.content)
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值