新手向爬虫(二)站点分析

新手向爬虫(一)利用工具轻松爬取简书并分析中我们初步接触了爬虫,关键在于:

  1. 通过工具获取网页内容选择器
  2. 分析页面元素,是否包含隐藏信息
  3. 利用浏览器的开发者工具分析网络请求

现在让我们对简书站点做一定的分析:

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写网络爬虫

    原文作者:treelake
    原文地址: https://www.jianshu.com/p/b8a581e56b76
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞