Python爬虫学习4:requests.post模拟登录豆瓣(包括获取验证码)

1.  在豆瓣登录网页尝试登录后打开开发者工具,可以查找后去Headers和Form Data信息。



2. 实现代码

import requests
import html5lib
import re
from bs4 import BeautifulSoup


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

formdata = {
    'redir':'https://www.douban.com',
    'form_email': '[email protected]',
    'form_password': 'zzwzyt@2015',
    'login': u'登录'
}


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'}

r = s.post(url_login, data = formdata, headers = headers)
content = r.text
soup = BeautifulSoup(content, 'html5lib')
captcha = soup.find('img', id = 'captcha_image')    # 查找验证码

可通过image查找验证码所在的地址(src后面的地址)

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:')
    print('已输入验证码')
    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)


在网页打开验证码所在地址,看到验证码后手动输入即可。

猜你喜欢

转载自blog.csdn.net/zhuzuwei/article/details/80875538