##爬虫Day2:
-
02 网络爬虫安全
1.网络爬虫引发的问题:
###网络爬虫的尺寸:网页(Requests库)——网站(Scrapy库)——全网(定制开发,搜索引擎)。###网络爬虫骚扰(对服务器)
###爬虫的合法性:几乎每一个网站都有一个名为 robots.txt 的文档,当然也有部分网站没有设定 robots.txt。对于没有设定 robots.txt 的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面数据都可以爬取。如果网站有 robots.txt 文档,就要判断是否有禁止访客获取的数据。当然robots协议本身也只是一个业内的约定,是不具有法律意义的,所以遵不遵守呢也只能取决于用户本身的底线了。
###网络爬虫的限制:1.来源审查(User-Agent);2.发布公告(Robots协议)。
2.Robots协议:
User-agent:* (针对所有爬虫)
Disallow:/ (针对根目录) -
03 实例练习(00、01、02)
1.亚马逊官网503错误:用headers检查,其中有自身爬虫的request信息,被亚马逊通过来源审查限制。解决方法:
d={
'User-agent':'Chorme/10.0'} ##模拟浏览器
r=requests.get('https://www.amazon.cn/',headers=d)
print('r.status_code')
200
2.搜索关键词提交:关键词提交接口
kv={
'wd':'content'} ##改变身份
r = requests.get(url,params=kv)
print(r.request.url) ##检查
https://www.baidu.com/?wd=content
3.网络图片爬取:
split("/")[-1] 和 split("/",-1)的区别
>>> str="http://www.runoob.com/python/att-string-split.html"
>>> print("0:%s"%str.split("/")[0]) ##都是获得选定切割对象后面起的内容
0:http:
>>> print("0:%s"%str.split("/")[2])
0:www.runoob.com
>>> print("0:%s"%str.split("/")[-1])
0:att-string-split.html
>>> print("0:%s"%str.split("/",1))
SyntaxError: invalid character in identifier
>>> print("0:%s"%str.split("/",1))
0:['http:', '/www.runoob.com/python/att-string-split.html']
import requests
import os
url='https://www.baidu.com/img/bd_logo1.png' ##图片地址
root='E://new file//' ##(根)目录
path=root+url.split('/'