博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python模拟登入豆瓣网,并爬取小组信息
阅读量:5023 次
发布时间:2019-06-12

本文共 2237 字,大约阅读时间需要 7 分钟。

import requestsfrom bs4 import BeautifulSoupfrom PIL import Imageheaders = {    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',    'Referer':'https://accounts.douban.com/login?alias=&redir=https%3A%2F%2Fwww.douban.com%2F&source=index_nav&error=1001'}session = requests.Session()session.headers.update(headers)username = input('请输入你的用户名:')password = input('请输入你的密码:')url = 'https://accounts.douban.com/login'def login(username,password,source='index_nav',redir='https://www.douban.com/',login='登录'):     #模拟登入函数    caprcha_id,caprcha_link = get_captcha(url)          #把get_captcha函数返回的值    if caprcha_id:          #如果有caprcha_id,就执行解析caprcha_link网页信息,并把图片保存下来打开        img_html = session.get(caprcha_link)        with open('caprcha.jpg','wb') as f:            f.write(img_html.content)        try:            im = Image.open('caprcha.jpg')            im.show()            im.close()        except:            print('打开错误')        caprcha = input('请输入验证码:')      #把看到的验证码图片输入进去    data = {                    #需要传去的数据        'source':source,        'redir':redir,        'form_email':username,        'form_password':password,        'login':login,    }    if caprcha_id:          #如果需要验证码就把下面的两个数据加入到data里面        data['captcha-id'] = caprcha_id        data['captcha-solution'] = caprcha    html = session.post(url,data=data,headers=headers)    print(session.cookies.items())def get_captcha(url):       #解析登入界面,获取caprcha_id和caprcha_link    html = requests.get(url)    soup = BeautifulSoup(html.text,'lxml')    caprcha_link = soup.select('#captcha_image')[0]['src']    #lzform > div.item.item-captcha > div > div > input[type="hidden"]:nth-child(3)    caprcha_id = soup.select('div.captcha_block > input')[1]['value']    return caprcha_id,caprcha_linklogin(username,password)login_url = 'https://www.douban.com/group/'xiaozu_html = session.get(login_url)soup = BeautifulSoup(xiaozu_html.text,'lxml')#content > div > div.article > div.topics > table > tbody > tr:nth-child(1) > td.td-subject > atitles = soup.select('tr.pl > td.td-subject > a.title')for title in titles:    print(title['href'],title.string)

 

转载于:https://www.cnblogs.com/114811yayi/p/6815408.html

你可能感兴趣的文章
Java线程-- 线程池
查看>>
适时放手,是对自己的尊重
查看>>
badboy录制兼容性有趣测试
查看>>
sqlite字段类型
查看>>
Verilog之VGA
查看>>
java反射
查看>>
C++ 引用
查看>>
lab -- 美国大学实验室
查看>>
tiled工具使用
查看>>
MySQL 的性能(下篇)—— 性能优化方法
查看>>
xctf --Hctf2014 Quals write up
查看>>
一个完整的大作业
查看>>
自定义Java Annotations实例以及用Java Reflection来解析自定义的Annotation
查看>>
【ADB命令第三篇】教你删除忘记的密码!
查看>>
Chapter16— A thread's Stack
查看>>
CoreLocation详解
查看>>
Android App 性能评测与调优
查看>>
【电子基础】单片机定时器实用方法总结
查看>>
Prism4文档翻译(第二章 全部内容)
查看>>
智东西公开课干货盘点 | 全方位解析人脸识别商用落地
查看>>