python爬虫系列(二)想要爬取站点?你先要知道这几件事情。
一、前言:
- 刚开始写爬虫程序,如果爬取的站点规模比较小,此时往往我们不需要关注站点的规模,因为此时对我们的效率影响来说,多点少点都没关系,假设只有几百个页面,多点少点也就那么点时间。
- 但是,假如你爬取的站点规模相当大,数量达到了百万级的,此时如果你还是每次都全部爬取,这时候效率就是不可接受的了。
- 百万级的站点,并行抓取都很久,串行抓取估计你可以开启爬虫后先去休假两三个月再回来了。
- 所以,在抓取站点之前,我们根据实际情况来获取一些站点的规模信息是非常有必要的。
二、获取站点的规模
- 获取一个站点的规模信息,其实我们可以利用百度或者google爬虫的成果。
- 如何利用呢?
- 其实我们可以在站点前加site:www.xxxx.com来判断www.xxxx.com这个站点的规模是多大。
- 其会返回所收录的页面数,当然这个数量不是百分百的,但其基本上是能够反应我们所需抓取的站点的规模的。
三、识别站点的技术
- 说完站点的规模,其实站点所使用的技术也会对我们的抓取过程有所影响。
- 比如:仅使用javascript、html、css构建的站点,抓取其内容是相对简单的。如果是使用AngularJS、ReactJs等构建该网站,此时的网站内容就很可能是动态加载的。更老点的站点,其使用了ASP,那么在爬取页面时就必须要用到会话管理和表单提交了等操作手段了。
builtwith模块的使用
- 我们可以使用builtwith模块来检查站点构建的技术类型
- 使用操作是相当简单的。
- 1、安装builtwith:
- python2输入:pip install builtwith
- python3输入:pip3 install builtwith
-
安装好之后,使用起来也是很简单的哦:
-
直接调用builtwith.parse(url)即可解析指定站点
-
示例:
-
我们解析下自己的站点:
import builtwith print(builtwith.parse(‘http://www.catbro.cn’));
- 结果:
{‘programming-languages’: [‘Java’], ‘miscellaneous’: [‘Gravatar’], ‘javascript-frameworks’: [‘jQuery’]}
-
可以看到,我们的站点技术相对简单,开发语言为java,还使用了jQuery
-
我们再看看头条
-
示例代码
import builtwith print(builtwith.parse(‘http://www.toutiao.com’));
- 结果:
{‘web-servers’: [‘Tengine’], ‘web-frameworks’: [‘Django’], ‘programming-languages’: [‘Python’], ‘javascript-frameworks’: [‘Prototype’]}
- 可以看到,我们连他用了什么服务器都可以知道,开发语言是python,框架为Django
- 这些对于我们决定采用什么抓取策略都是很有帮助的。
四、所有者、python-whois模块的使用
-
除此之外,我们还可以知道抓取的站点的所有者是谁哦。
-
一般情况下,知不知道肯定关系不大,但是假如我们知道某个大牛,其反爬虫技术特别牛,此时我们抓取其站点时是不是应该要收敛点,速度放慢点呢?当然,己所不欲勿施于人,在爬取一般站点时,还是建议大家的抓取速度尽量不要太块。
-
我们可以通过使用python-whois来获取所有者信息。
-
操作也很简单:
- 1、安装python-whois:
- python2输入:pip install python-whois
- python3输入:pip3 install python-whois
- 示例代码:
import whois print(whois.whois(‘http://www.toutiao.com’))
-
结果如下(只截取部分):
{ "domain_name": [ "TOUTIAO.COM", "toutiao.com" ], ..... "dnssec": "unsigned", "name": "Xiamen PrivacyProtection Service Co., Ltd.", "org": "Xiamen Privacy Protection Service Co., Ltd.", "address": "Software Park wanghai Road No. 19, 603", "city": "Xiamenshi", "state": "Fujian", "zipcode": "361000", "country": "CN" }
-
可以看到,其在福建厦门。
-
OK,本次我们主要学习了如果获取站点的规模,构建技术,所有者等信息。
-
希望对你有帮助,谢谢。