19.SimLogin_case07
19
2023-09-11 14:21:24 时间
# 模拟登录豆瓣
from urllib.request import urlretrieve
import requests
from bs4 import BeautifulSoup
from os import remove
try:
import cookielib
except BaseException:
import http.cookiejar as cookielib
try:
from PIL import Image
except BaseException:
pass
url = 'https://accounts.douban.com/login'
datas = {'source': 'index_nav',
'remember': 'on'}
headers = {
'Referer': 'https://www.douban.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
' (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8'}
# 尝试使用cookie信息
session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename='cookies')
try:
session.cookies.load(ignore_discard=True)
except BaseException:
print("Cookies未能加载")
# cookies加载不成功,则输入账号密码信息
datas['form_email'] = input('Please input your account:')
datas['form_password'] = input('Please input your password:')
def get_captcha():
'''
获取验证码及其ID
'''
r = requests.post(url, data=datas, headers=headers)
page = r.text
soup = BeautifulSoup(page, "html.parser")
# 利用bs4获得验证码图片地址
img_src = soup.find('img', {'id': 'captcha_image'}).get('src')
urlretrieve(img_src, 'captcha.jpg')
try:
im = Image.open('captcha.jpg')
im.show()
im.close()
except BaseException:
print('到本地目录打开captcha.jpg获取验证码')
finally:
captcha = input('please input the captcha:')
remove('captcha.jpg')
captcha_id = soup.find(
'input', {'type': 'hidden', 'name': 'captcha-id'}).get('value')
return captcha, captcha_id
def isLogin():
'''
通过查看用户个人账户信息来判断是否已经登录
'''
url = "https://www.douban.com/accounts/"
login_code = session.get(url, headers=headers,
allow_redirects=False).status_code
if login_code == 200:
return True
else:
return False
def login():
captcha, captcha_id = get_captcha()
# 增加表数据
datas['captcha-solution'] = captcha
datas['captcha-id'] = captcha_id
login_page = session.post(url, data=datas, headers=headers)
page = login_page.text
soup = BeautifulSoup(page, "html.parser")
result = soup.findAll('div', attrs={'class': 'title'})
# 进入豆瓣登陆后页面,打印热门内容
for item in result:
print(item.find('a').get_text())
# 保存 cookies 到文件,
# 下次可以使用 cookie 直接登录,不需要输入账号和密码
session.cookies.save()
if __name__ == '__main__':
if isLogin():
print('Login successfully')
else:
login()
相关文章
- 19 — node 模块化 及 CommonJS规范 — CommonJS 的由来及各组织与 JS 的关系
- [PWA] 19. Cache the avatars
- Flutter 陈航 19-手势识别 PointerEvent GestureDetector GestureRecognizer
- [Typescript challenge] 19. Medium - Tuple to Union
- Qt编写安防视频监控系统19-日志查询
- 【STM32H7】第19章 ThreadX信号量
- BigData:根据最新2018.07.19《财富》世界500强榜单进行大数据分析
- [手游项目3]-19-守护进程supervisor安装与使用
- 【LeetCode Python实现】19. 删除链表的倒数第 N 个结点(中等)首次 99.5% +
- VB编程:将文本控件添加到集合Collection中-19_彭世瑜_新浪博客
- 我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
- 19 openEuler 管理服务-特性说明
- 爬虫日记(19):实例使用Item对象
- 40岁了去华为19级,薪酬翻倍,但现在比较稳定,值得吗?
- UDS之19服务中04子服务:读取快照数据