import requests
import lxml
from lxml import html
header={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.3'
}
url = 'https://accounts.douban.com/login?'
伪造data,这里的验证码选择手打,将访问时候的验证码图片下载到本地
def get_id():这个函数用于找到登陆时候的验证码,以及匹配data里面的captcha-id
url = 'https://accounts.douban.com/login?'
data = requests.get(url).content
selector = lxml.html.document_fromstring(data)
id = selector.xpath('//input[@name="captcha-id"]/ @value')
image_url=selector.xpath('//img[@id="captcha_image"]/@src')这里是下载验证码图片
print(id, image_url)
with open('login.png','wb')as f:
f.write(requests.get(image_url[0]).content)
f.close()
return id
#get_id()
def get_login():
id=get_id()
login_number=input('请输入验证码:')
data = {
'source': None,
'redir': 'https://www.douban.com/',
'form_email': '',
'form_password': '',这里本人的账户密码就隐藏了吧
'captcha-solution': login_number,
'captcha-id': id,
'login': '登录'
}
session = requests.Session()
result = session.post('https://accounts.douban.com/login?',data=data,headers=header)
admin_id=input('请输入访问的用户ID:')要访问豆瓣哪个用户,有些用户的主页是要登陆才能看到,
有些则不用,这里选取的是需要登陆才能看到的用户
front_page=session.get('https://www.douban.com/people/{}/'.format(admin_id))以后登陆豆瓣的页面
直接用session.get(url,headers=header)就可以了
print(front_page.content.decode())打印登陆后的页面
get_login()
登陆结果显示,前面是没有登陆的结果
登陆后