导读:
- 这篇文章提供了两种爬虫的运用实例,headless chrome + selenium和Requests爬取酷传网,python版本为3.7。这两种爬虫方法足够突破大多数网站的反爬虫技术。简单易学,建议做互联网运营岗产品岗的朋友了解下。
- 优快云上关于无头浏览器的博客,给出登录之后爬json数据的方案着实不多,这篇文章包含headless Chrome获得的string类型网页源码之后,如何进一步处理数据的方法(希望对初学者有启发)。
- 代码没有面向对象编程,在后期的迭代中会改进。
故事背景:
我上星期参加互联网运营和产品岗网课的时候,教课的大佬给我们布置任务,去收集一款叫“foodie”的APP的用户评论。
我第一念头是我可以通过安卓模拟器和fiddler抓包,直接爬各大app应用商店的数据,简单粗暴直接。
然而当我都打开了pycharm, 导入了各种包之后,大佬却突然给我发了个网址,还留了一句话:“手机评论上酷传网啊。”
。。我当时内心是有点宕机的
于是。。。咦!这网站它就是一只大爬虫啊。
这个网站的数据应该是通过我上面的说的那种方法,从安卓模拟器里爬取各大应用商店获得。
(更好玩的是它这个数据是打包好的,登陆付费直接可以“导出数据”(一次三个文件)。我只好忍痛付费7元买了个24小时会员,算是致敬了这变现了爬虫技术的大佬,开发不易。我还没学到并发,多线程,分布式爬虫的技术,酷传网具体是怎么实现这种大规模高密度爬APP的,技术细节我还真说不上来。如果有大佬知道请给我留个言哈。)
想想这不成啊,我都已经开始技痒了,这时再让我收手直接从页面下载,不能忍啊忍不能啊。。。而且我这两天还真就刚好就配置了headless Chrome。。
说实话,我写python爬虫代码的次数也不算少,对付这种需要登陆的网站大多是先登陆,然后用Request库带cookies,获取相应数据。还从来没尝试过用无头浏览器登录,获取网页源码。看着这个大爬虫网站我突然有点兴奋了,也不管会不会有点南辕北辙的意思,反正我要用python 代码从这个网站一次性获得我要的数据!而不是在网站上每次三个包,分多次下载(主要是验证无头浏览器的登录网页的过程)。
无头浏览器是爬虫界比较异端的一种方案,大致原理是控制一个没有界面的浏览器去访问网站,需要获得网页源码的方式筛选需要的数据。
相比于Urllib和Requests等库和Scrapy框架,无头浏览器确实存在数据爬取效率低,环境配置流程复杂坑多,对耐心不足的用户极端不友好。但是无头浏览器的优势也是很明显的,它就是一个完整的浏览器,能够保留用户的信息,实现自动登陆,持续保持对话信息,是浏览器自动化中重要的组成部分
———————这是一条华丽分割线—————————————
进入正题
我的思路很简单
一. 无头浏览器方法:
通过Chrome打开”酷传网“登录界面,输入账号密码登录,然后用fiddler获取“foodie”的评论区数据包,找到链接接口,一步爬取数据
虽然原理简单,但是真正写起来,这个过程里的坑多的可怕。一个坑过不去,还不一定有绕行的方案。这个我们一边看代码一边聊。
import json
from selenium import webdriver
from selenium