1、网络爬虫的尺寸
爬取网页 Requests库
爬取网站 Scrapy库
爬取全网 建立搜索引擎
2、网络爬虫引发的问题
1.服务器性能骚扰
2.法律风险
3.泄露隐私
3、网络爬虫的限制
来源审查:判断User-Agent进行限制
检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问
发布公告:
告知所有爬虫网站的爬取策略,要求爬虫遵守。
Robots Exclusion Standard 网络爬虫排除标准
作用:网站告知网络爬虫哪些页面可以抓取,哪些不行。
形式:在网站根目录下的robots。txt文件
eg.京东的Robots协议 https://www.jd.com/robots.txt
User-agent: * #不可以爬取/?开头的网页 等等…… Disallow: /?* Disallow: /pop/*.html Disallow: /pinpai/*.html?* User-agent: EtaoSpider #以下四种spider为恶意爬虫,不可以爬任何网页 Disallow: / User-agent: HuihuiSpider Disallow: / User-agent: GwdangSpider Disallow: / User-agent: WochachaSpider Disallow: /
注:Robots协议基本语法 # 注释 *代表所有 /代表根目录
1.Robots协议的使用
网络爬虫:自动或人工识别robots.txt,再进行内容爬取。
约束性:Robots协议是建议但非约束性,可不遵守,但存在法律风险。
2.对Robots协议的理解
结合网络爬虫尺寸,尺寸越大,越要遵守,防范法律风险。
类人行为可不遵守,阅读频率小,一次浏览内容少,注意不可用于商业用途。
>>> r = requests.get("https://item.jd.com/6946605.html")
>>> r.status_code
200
>>> r.encoding
'gbk'
>>> r.text[:1000] #取网页前1000个字符
'\n\n\n \n \n 【华为P20】华为 HUAWEI P20 AI智慧全面屏 6GB +64GB 亮黑色 全网通版 移动联通电信4G手机 双卡双待【行情 报价 价格 评测】-京东 \n \n \n \n \n \n \n \n \n \n
>>> import requests
>>> url = "https://item.jd.com/6946605.html"
>>> try:
r = requests.get(url)
r.raise_for_status() #此函数返回200不产生异常,否则产生异常
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失败")
#上为网络爬虫代码框架
【华为P20】华为 HUAWEI P20 AI智慧全面屏 6GB +64GB 亮黑色 全网通版 移动联通电信4G手机 双卡双待【行情 报价 价格 评测】-京东
>>> r = requests.get("www.amazon.cn/gp/product/B01M8L5Z3Y")
>>> r.status_code
503
>>>r.encoding
'ISO-8859-1'
>>>r.encoding = r.apparent_encoding
>>>print(r.text)
#出现错误 由于API造成 检查head
>>>r.requests.headers
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
#网站发现了python爬虫的request请求,并拒绝了,利用headers控制参数修改user-agent
>>> kv = {'user-agent':'Mozilla/5.0'}
>>> url = "https://www.amazon.cn/gp/product/B01M8L5Z3Y"
>>> r = requests.get(url,headers = kv)
>>> r.status_code
200
>>> r.request.headers
{'user-agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
>>> r.text[:1000]
'\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n