在新手向爬虫(一)利用工具轻松爬取简书并分析中我们初步接触了爬虫,关键在于:
- 通过工具获取网页内容选择器
- 分析页面元素,是否包含隐藏信息
- 利用浏览器的开发者工具分析网络请求
现在让我们对简书站点做一定的分析:
Robots.txt
- 首先,网站自身的robots.txt会为我们提供一定信息。大多数网站会定义
/robots.txt
, 这样可以让爬虫了解爬取该网站时存在哪些限制,虽然这些只是建议,但是一般情况下良好的网络公民都应当遵守这些限制。关于robots.txt的详细信息可以查看这个网站。让我们看看简书的robots页面吧。
- 可以看出,简书对无论使用哪种用户代理(User-agent)的爬虫都封禁了某些路径。让人好奇的是有两个以/p开头的路径,一看就是两篇文章,什么文章会让简书对爬虫封禁呢?
哈哈,原来是某位简友在早先简书安卓app还没出来时自己开发了个简书app,估计是后来简书app出来了,避免大家在搜索时混淆就对爬虫封禁了这两个页面。 - 我们再看下其它网站的,比如知乎:
可以看到,有个Crawl-delay : 10
,它意味着无论哪种爬虫都应该在两次下载请求之间给出10秒的抓取延迟,我们需要遵从该建议以减轻服务器负担。否则服务器可能封禁你的IP一段时间。 - 我们再来看看美化版wiki-wikiwand的,除了爬虫信息外,它还提供了一个sitemap(站点地图)来帮助爬虫定位网站最新的信息,而无需爬取每一个网页。(站点地图的标准)
-
让我们打开sitemap看看:
估算网站大小
- 目标网站的大小会影响我们如何进行爬取。估算网站大小的一个简便方法就是检查大型搜索站点的结果,它们的爬虫很可能爬取过我们感兴趣的页面,不过大型的网站结果并不是很准确,用来有个直观感受就好了;小网站还是比较实用的。
-
让我们在搜索引擎中加入site参数来看下简书的结果:
结果有一定差异,百度最多,谷歌其次,搜狗最少,不过都在百万量级。
-
再看下知乎
- 搜狗知乎的网页数超过百度不少。
- 此外,在域名后面添加URL路径可以对搜索结果进行过滤。(很多时候我们只想爬取某一部分有特定信息的网页)。
识别网站所有者
- 安装
pip install whois
(python) - 对简书使用,可以看到上海佰集信息科技有限公司,不过这里的创立日期和百度百科上2010年8月6日的登记成立日期好像不是一回事。
-
查看域名归属和其它一些信息也有利于我们的爬虫决策。
-
再看下知乎和facebook的。
分析网站所用技术
- 安装
pip install builtwith
(python) - 对简书使用,当然网站使用技术是多面的,这里可能分析的不够全。
-
网站所用的框架,以及AngularJS之类的动态加载,ASP.NET的会话管理和表单提交都会影响我们的爬虫策略。
查看网页编码
-
网页编码也是我们需要注意的地方
- 可以看出简书是使用了utf8编码,对python爬虫来说没有大问题
参考:Web Scraping with Python —— 用python写网络爬虫