|
“另类”角度
² 反向调研:通过待资源主要字段来调研收集些高质量的目标网站。
² 做下载不能只关注“直接”网站,要想做好做优,还要去收集和发现“间接”(间接:包含直接网站内容)网站(维基等百科类网站,后面还要自己继续积累),因为“直接”网站可能由于版权或者其它原因数据不全。
² 学会如何挑选优质的下载源,这个对爬虫攻城狮至关重要;其中不同下载源不同分类资源占比,是个不错的选择。
² 没有最好的方法,只有最优(最适合)的方法。
下载新认知
需求者提供的下载具体下载入口,在一开始对我们来说只是需求展示的介质;只有等到爬虫攻城狮对任务进行分析(web、PC端应用、APP)等展现形式,才能确定要爬取的具体展现形式。
下载思路层次(从补充完善需求提出者和爬虫开发者角度)。
² 一般人思路(需求者直接给的任务直接做)。
² 采用上面1的思路。
² 考虑类似网站有没有更好的。
² 拿来主义(百度网盘等)。
² 还有其他思维,需要继续扩展。
在自己的工作学习中要提高自己的知识网
² 知识网 = 点(单个知识)+ 点之间的连线(知识彼此之间的关系)。
² 要扩展自己的知识点和彼此之间的连线。
两个维度
两个维度分别为:
² 横向维度: PC页面,PC(windows和苹果)客户端,手机(android和iPhone)app,wap页面等
² 纵向维度: 版本从高到低
apk和浏览器的区别总结:
Ø 不论是浏览器或者是apk,在下载网站开始,爬虫工程师要比需求提出者对本网站的了解(包括:此网站数据展示介质、网站背景、网站的组织结构及今后的发展等)更加全面深刻;因为只有这样爬虫工程师才能有效的去引导需求提出者和更高效全量高质量的完成下载任务。
Ø 在使用低版本的apk可以得到需要的数据或者是能满足下载需求,这时不能只简单的满足下载需求,还应该将这个apk中的所有可用的接口请求全部记录下载;可能这个低版本apk在今后某个时刻此网站就不支持了(比如:网易云音乐apk2.2)。
Ø 在开始解决下载任务的时候,一定要清楚自己是要从浏览器、PC客户端还是从Android APK去分析下载;因为这里面主要有以下两方面的区别:
此网站可能在浏览器、PC客户端和Android APK介质上展示的数据规模可能不同;这就需要爬虫工程师去调研分析如何才能下载到更多的数据。网页是可以随时改版的,但客户端是可以随时升级版本,但是老的版本是要支持的,相当于没有改版;对代码的维护和响应内容解析个更加方便便捷。
分析如何获得有效的网络请求
分析请求URL的几种情景:
Ø 通过URL请求可以直接获得想要的内容。
Ø 通过URL请求有部分字段数据是需要通过分析js或者是异步加载的。
Ø 有些URL请求的参数难以被构造,构造的代价比较大或者目前自己的能力解决不了;这时可以使用以下方法:
从两个维度考虑,尝试能不能解决问题模拟浏览器,常用的有Webkit和phantomjs自动化测试工具
解决方法获得途径:
Ø 自己分析请求URL
Ø 从github.com查找现成的下载方案、[开源网站:知乎、github、bitbucket、Google Code<Wikis、Issues>]
Ø 查询现成的下载工具
下载搜狐、土豆等网站的视频数据,可以采用硕鼠、you-get。
火车头采集器、八角鱼、小飞侠(CS架构)、集搜客GooSeeker、前嗅ForeSpider。
对于大型门户网站都会有自己的开发者API,可以使用开发者API进行下载
Ø 网盘类资源,百度网盘,“拿来主义”,构建海量数据,值得花大量时间去实现
Ø 以上方法的集合
伪装成WAP请求
玩过爬虫的朋友应该都清楚,爬虫难度:www > m > wap (www是PC端,m和wap是移动端,现在的智能手机一般用的是m站,部分老手机用的还是wap),原因也很简单,现在的网站越来越多地使用AJAX加载,反爬虫机制也厉害。而像wap这种移动端网站限制比较小,网页结构也简单,我们获取、解析起来都简单很多,理论上速度也会快很多。所以如果允许的话我们尽量采用wap站抓取。
修改浏览器的 User-Agent 伪装成移动端,从而像手机浏览器一样访问目标网站。爬虫程序带上不同的 User-Agent,可以从m端(甚至是wap端)爬取目标网站。
修改浏览器ua的两种方法:
Ø User-agent Switcher插件。
Ø 直接修改浏览器的User-Agent。
所以要在工作中构建自己的User-agent池。 |
|