Python爬虫从入门到精通(二)爬虫的基本常识

898 阅读4分钟

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

一、爬虫的合法性问题

目前还处于不明确的蛮荒阶段,“允许哪些行为”这种基本秩序还处于建设中。

至少目前来看,如果抓取的数据为个人所用,则不存在问题;如果数据用于转载,那么

抓取数据的类型就很重要了:一般来说,当抓取的数据是实现生活中的真实数据(比如,营业地址,电话清单)时,是允许转载的,但是,如果是原创数据(比如,意见或评论),通常就会受到版权限制,而不能转载。

讨论:百度爬虫抓取数据行为的合法性问题。

****** 注意:不管怎么样,作为一个访客,应当约束自己的抓取行为,这就是说要求下载请求的速度需要限定在一个合理值之内,并且还需要设定一个专属的用户代理来标识自己。

二、爬虫的准备工作:网站的背景调研

网站的背景调研对聚焦的网络爬虫而言至关重要,正所谓:知己知彼,百战不殆。

1 、robots 协议

Robots 协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol ),网站通过Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

****比如:

淘宝网:www.taobao.com/robots.txt

****再比如:

www.douban.com/robots.txt

搜索引擎和DNS 解析服务商( 如DNSPod 等)合作,新网站域名将被迅速抓取。但是搜索引擎蜘蛛的爬行是被输入了一定的规则的,它需要遵从一些命令或文件的内容,如标注为nofollow 的链接,或者是Robots 协议。另外一种则是,通过网站的站长主动对搜索引擎提交网站的网址,搜索引擎则会在接下来派出“蜘蛛”,对该网站进行爬取。

2、网站地图sitemap

sitemap 是一个网站所有链接的容器。很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎蜘蛛抓取网站页面,通过抓取网站页面,清晰了解网站的架构,网站地图一般存放在根目录下并命名为sitemap ,为搜索引擎蜘蛛指路,增加网站重要内容页面的收录。网站地图就是根据网站的结构、框架、内容,生成的导航网页文件。大多数人都知道网站地图对于提高用户体验有好处:它们为网站访问者指明方向,并帮助迷失的访问者找到他们想看的页面。

网站地图sitemap 有两种形式:

A.HTML :称为HTML 版本的网站地图,英文是sitemap, 特质HTML 版网站地图,这个版本的网站地图就是用户可以在网站上看到的,列出网站上所有主要页面的链接的页面。对小网站来说,甚至可以列出整个网站的所有页面,对于具有规模的网站来说,一个网站地图不可能罗列所有的页面链接,可以采取两种办法,一种办法是网站地图只列出网站最主要的链接,如一级分类,二级分类,第二种办法是将网站地图分成几个文件,主网站地图列出通往次级网站的链接,次级网站地图在列出一部分页面链接。

B.XML :XML 版本的网站地图是由Google 首先提出的,怎么区分了,上面所说的HTML 版本的s 是小写的,而XML 版本的S 则是大写的,XML 版本的网站地图是由XML 标签组成的,文件本身必须是utf8 编码,网站地图文件实际上就是列出网站需要被收录的页面的URL ,最简单的网站地图可以是一个纯文本件,文件只要列出页面的URL ,一行列一个URL ,搜索引擎就能抓取并理解文件内容。

可以使用这个网站工具来生成某网站的sitemap www.sitemap-xml.org

3、 估算网站的大小

可以使用搜索引擎来做,比如在百度中使用site:

说明:这里只是通过百度搜索引擎大致来估算网站的大小,受到网站本身对搜索引擎爬虫的限制,及搜索引擎本身爬取数据技术的限制,所以这只是一个经验值,可以作为估算网站体量量级的一个经验值。

4、 识别网站用了何种技术

为了更好的了解网站,抓取该网站的信息,我们可以先了解一下该网站大致所使用的技术架构。

安装builtwith :

Windows : pip install bulitwith

Linux:     sudo pip install builtwith

使用:在Python 交互环境下,输入:

import builtwith

builtwith.parse("http://www.sina.com.cn")

5、 寻找网站的所有者

有时候,我们需要知道网站的所有者是谁,这里在技术上有个简单的方法可以参考。

安装python-whois :

Windows : pip install python-whois

使用:在Python 交互环境下,输入:

import whois

whois.whois("http://www.sina.com.cn")