分类 requests库 下的文章

import requests
url = "https://item.jd.com/100038004359.html"
try:
r = requests.get(url) # 提交 get请求
r.raise_for_status() # 如果返回的不是200就触发 requests.HTTPError 异常
r.encoding = r.apparent_encoding # 将猜测的页面编码换成获取到的内容编码
print(r.text[:1000]) # 输出返回的内容是字符串,字符串太长,只输出0至1000下标的内容
except:
print("产生异常")

robots协议基本语法, * 表示所有 /表示根目录
User-agent: *
Disallow: /

任何网络需要遵守 robots 协议,对于类似人类访问网站,不够成对服务器资源影响的爬虫可以不遵循robots 协议,但是获取的数据不能用于商业

robots 协议的使用
网络爬虫:自动或者人工识别 robots.txt ,再进行内容爬取
约束性:robots 协议是建议并非约束性,网络爬虫可以不遵守,但存在法律风险

理论上任何网络爬虫都应该遵守 robots 协议,只有一种情况可以不考虑 robots 协议,但是获取的资源不能用于商业用途
比如说:写一个小程序,每天只对服务器访问几次,每次访问的内容有限,不对服务器构成资源影响,
这种访问和人类的访问非常相似,因为任何网站提供资源都是方便人类访问相关的信息

Robots Exclusion Standard 网络爬虫排除标准
作用:网站告知网络爬虫哪些页面可以抓取,哪些不行
网站的根目录会存放一个 Robots.txt 的文件,
里面写了哪些文件可以爬取,哪些文件不可以爬取

案例:京东的 Robots 协议
https://www.jd.con/robots.txt

User-agent: * 无论是哪种网络爬虫,都应该遵守如下协议
Disallow: /? 任何网络爬虫都不允许访问 ? 以问号开头的路径
Disallow: /pop/.html 任何网络爬虫都不允许访问 /pop/.html 文件
Disallow: /pinpai/.html? 任何网络爬虫都不允许访问 /pinpai/.thml? 符合此通配符的任何内容
User-agent: EtaoSpider 禁止 EtaoSpider 爬虫爬取根目录下任何资源
Disallow: /
User-agent: HuihuiSpider 禁止 HuihuiSpider 爬虫爬取根目录下任何资源
Disallow: /
User-agent: GwdangSpider 禁止 GwdangSpider 爬虫爬取根目录下任何资源
Disallow: /
User-agent: WochachaSpider 禁止 WochachaSpider 爬虫爬取根目录下任何资源
Disallow: /

User-agent: 代表哪些爬虫,如果表示所有的爬虫就用 * ,如果表示某一个爬虫就用爬虫的名字
Disallow: 代表不允许访问的资源目录,如果禁止访问所有资源就用 / 表示根目录 ,如果表示某一种资源就目录使用某种资源目录的标识符

案例:
https://www.baidu.con/robots.txt
https://www.sina.con.cn/robots.txt
https://www.qq.con/robots.txt
https://news.qq.con/robots.txt
https://www.moe.edu.cn/robots.txt 教育部(无robots协议)

robots 协议一定是放在网站的根目录下,
但是 news.sina.com.cn 和 www.sina.com.cn 是两个不同的根目录,
所以这两个站点的 robots 协议可能是不同的

有的网站是没有 robots 协议的,有的网站甚至没有 robots.txt 文件放在根目录
如果一个网站没有提供 robots 协议,那么说明这个网站是允许任何爬虫无限制爬取任何内容

网络爬虫引发的问题

网络爬虫的分类
小规模爬虫:数据量小爬取速度不敏感,使用 requests 库,针对网页或者一些列网页,90%以上的爬虫
中规模爬虫:数据规模较大,爬取速度敏感,使用 scrapy 库,针对一个网站或者一系列网站
大规模爬虫:搜索引擎,爬取速度关键,需要定制开发,针对全网

1、网络爬虫的“骚扰”
受限于开发人员的水平和目的,网络爬虫将会为web服务器带来巨大的资源开销

2、网络爬虫的法律风险
服务器上的数据有产权归属
网络爬虫获取数据后牟利将带来法律风险

3、网络爬虫泄露隐私
网络爬虫可能具备突破简单访问控制的能力,获得被保护数据从而泄露个人隐私

网络爬虫的限制
来源审查:判断 User-Agent 进行限制
检查来访 HTTP 协议头的 User-Agent 域,只相应浏览器或者友好爬虫的访问

发布公告:Robots 协议
告诉所有爬虫网站的爬取策略,要求爬虫遵守