专栏首页IT派GitHub 热门:各大网站的 Python 爬虫登录汇总

GitHub 热门:各大网站的 Python 爬虫登录汇总

不论是自然语言处理还是计算机视觉,做机器学习算法总会存在数据不足的情况,而这个时候就需要我们用爬虫获取一些额外数据。这个项目介绍了如何用 Python 登录各大网站,并用简单的爬虫获取一些有用数据,目前该项目已经提供了知乎、B 站、和豆瓣等 18 个网站的登录方法。

项目地址:https://github.com/CriseLYJ/awesome-python-login-model

作者收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录。作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据。

作者表示模拟登陆基本采用直接登录或者使用 selenium+webdriver 的方式,有的网站直接登录难度很大,比如 qq 空间和 bilibili 等,采用 selenium 登录相对轻松一些。虽然在登录的时候采用的是 selenium,但为了效率,我们也可以在登录后维护得到的 cookie。登录后,我们就能调用 requests 或者 scrapy 等工具进行数据采集,这样数据采集的速度可以得到保证。

目前已经完成的网站有:

  • Facebook
  • 无需身份验证即可抓取 Twitter 前端 API
  • 微博网页版
  • 知乎
  • QQZone
  • CSDN
  • 淘宝
  • Baidu
  • 果壳
  • JingDong 模拟登录和自动申请京东试用
  • 163mail
  • 拉钩
  • Bilibili
  • 豆瓣
  • Baidu2
  • 猎聘网
  • 微信网页版登录并获取好友列表
  • Github
  • 爬取图虫相应的图片

如下所示,如果我们满足依赖项,那么就可以直接运行代码,它会在图虫网站中下载搜索到的图像。

如下所示为搜索「秋天」,并完成下载的图像:

每一个网站都会有对应的登录代码,有的还有数据的爬取代码。以豆瓣为例,主要的登录函数如下所示,它会获取验证码、处理验证码、返回登录数据完成登录,并最后保留 cookies。

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()

其中获取并解决验证码的函数如下:

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: 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

当然这些都是简单的演示,在 GitHub 项目中可以找到更多的示例。此外,作者表明由于网站策略或者样式改变而导致代码失效,我们也可以提 Issue 或 Pull Requests。最后,该项目未来还会一直维护,很多东西哦也会慢慢改进,项目作者表明:

  • 项目写了一段时间后,发现代码风格、程序易用性、可扩展性、代码的可读性,都存在一定的问题,所以接下来最重要的是重构代码,让大家可以更容易的做出一些自己的小功能;
  • 如果读者觉得某个网站的登录很有代表性,可以在项目 issue 中提出;
  • 网站的登录机制有可能经常的变动,所以当现在的模拟的登录的规则不能使用的时候,请项目在 issue 中提出。

编译:机器之心

本文分享自微信公众号 - IT派(it_pai),作者:CriseLYJ

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你也可以训练超大神经网络!谷歌开源GPipe库

    深度神经网络(DNN)推动了许多机器学习任务的发展,包括语音识别、视觉识别、语言处理。BigGan、Bert、GPT2.0取得的近期进展表明,DNN模型越大,其...

    IT派
  • 比抖音更狠,它正在摧毁年轻人的未来!

    “最起初,我只是想买一只刚上市的iphone6s。一个月还300,我完全可以负担的起。谁知欲望和贪念就像滚雪球一样越滚越大,噩梦就是从这个时候开始的。

    IT派
  • 用于数据科学和机器学习的GitHub存储库和Reddit主题

    GitHub和Reddit都是比较有趣的平台,在这里,我不仅学习了数据科学的一些最佳应用,而且还了解数据科学家们是如何编程的。

    IT派
  • 用 Python 登录主流网站,我们的数据爬取少不了它

    项目地址:https://github.com/CriseLYJ/awesome-python-login-model

    机器之心
  • 32位 or 64位:Apache CloudStack系统VM架构选择

    最近我和一些朋友讨论了一个关于CloudStack的问题:为什么现在CloudStack 4.3同时提供32位或64位系统虚拟机的选项。我提出了一个观点,并将其...

    Sepmer Fi
  • CVPR2018 目标检测算法总览(最新的目标检测论文)

    CVPR2018上关于目标检测(object detection)的论文比去年要多很多,而且大部分都有亮点。从其中挑了几篇非常有意思的文章,特来分享,每篇文章都...

    朱晓霞
  • CVPR2018 目标检测算法总览(最新的目标检测论文)

    1、Cascaded RCNN 论文:Cascade R-CNN Delving into High Quality Object Detection 论文...

    机器学习AI算法工程
  • [第二周]Jupyter Notebook和Markdown知识点汇总

    打开Notebook,可以看到主面板。在菜单栏中有Files、Running、Clusters、Conda四个选项。用到最多的是Files,我们可以在这里完成n...

    OrekiShiko
  • JavaScript设计模式--桥梁模式--引入

    wfaceboss
  • 整理了2019年上千道Java面试题,近500页文档,用了1个月时间!

    2.6、区分 BeanFactory 和 ApplicationContext。.

    程序员追风

扫码关注云+社区

领取腾讯云代金券