网络爬虫的尺寸
爬取网页:小规模,数据量小,爬取速度不敏感(Requests库)
爬取网站:中规模,数据量较大,爬取速度敏感(Scrapy库)
爬取全网:大规模,建立搜索引擎,爬取速度关键(定制开发,无第三方库)
网络爬虫带来的问题
1.骚扰问题
网络爬虫高频度的访问会给服务器带来极大的资源开销,对网站运行者来说,这无疑于一种骚扰。
2.法律风险
网络爬虫可能带来法律风险。这是因为服务器上的数据有产权归属,如果网络爬虫爬取使用者将爬取的数据用于牟利,可能会被法律制裁。
3.隐私泄露
网络爬虫可能具备突破简单访问控制的能力,获得被保护的数据从而泄露个人隐私。
网络爬虫的限制
来源审查:判断User-Agent进行限制
User-Agent会存储来访者的一些信息,比如客户端使用的操作系统以及浏览器的名称和版本。通过检查User-Agent的值,如果它并不表示一个浏览器,那么就很有可能是一个爬虫。因此,检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问,可能会起到限制网络爬虫的效果。
Robots协议
Robots.txt告知所有爬虫该网站的爬取策略并要求爬虫遵守。
Robots协议的查看以及用法
一般在url的path路径里指定robots.txt就能查看到该网站的robots协议,因为robots协议放在网站的根目录下。
接下来看一下京东网站的robots.txt:
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
User-agent:
爬虫爬取时会声明自己的身份,它被存储在User-agent里。
User-agent;* 的意思就是该robots协议对任何爬虫都有效。
Disallow:
该参数指定要拦截的网页。以正斜线(/)开头,可以列出特定的网址或模式。
要屏蔽整个网站,则可以这样设置:
Disallow:/
要屏蔽某一目录以及其中的所有内容,则这样设置:
Disallow:/目录名/
要屏蔽某个具体的网页,则如下:
Disallow:网页.index
Disallow: /?* 的意思就是所有的爬虫都不可以访问以?开头的网页路径上的资源。
Disallow:/pop/.html 的意思就是任何爬虫都不可以访问pop.html的内容。
另外,注意到上例robots协议中还有四个类似
User-agent:EtaoSpider
Disallow:/
这样的语句。
它们的意思是这四个网络爬虫不可以爬取京东网站的所有资源。
要想了解robots协议的更多用法,可参考下面的博客:
https://blog.csdn.net/qq_40491569/article/details/83473703