初学爬虫,一点笔记。。。。。本帖原创,转载请注明处处
- 爬虫工作原理
利用程序在网上拿到有价值的数据,当我们与浏览器信息交互式原理如下:
当你决定去某个网页后,首先,爬虫可以模拟浏览器去向服务器发出请求;其次,等服务器响应后,爬虫程序还可以代替浏览器帮我们解析数据;接着,爬虫可以根据我们设定的规则批量提取相关数据,而不需要我们去手动提取;最后,爬虫可以批量地把数据存储到本地。
四个步骤:1 获取数据 2 解析数据 3 提取数据 4 存储数据
- 获取数据
Python里一个强大的库: requests Windows电脑里命令提示符(cmd),输入pip install requests
即可。
函数:requests .get('URL') 具体运用如下:仔细看注释
import requests
#引入requests库
res = requests.get('URL')
#requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。我们把这个响应返回的结果赋值在变量res上。
Response对象的常用属性
属性 | 作用 |
response.ststus_code | 检查请求是否成功 |
response.contend | 把对象转换成二进制 |
response.text | 把对象转换成字符串 |
response.encoding | 定义编码 |
用法 :print(变量名.status_code(或comtend/text/encoding))
常见响应状态码即查即用
示例:详细看注释
import requests
#引用requests库
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')
#下载《三国演义》第一回,我们得到一个对象,它被命名为res
novel=res.text
#把Response对象的内容以字符串的形式返回
k = open('《三国演义》.txt','a+')
#创建一个名为《三国演义》的txt文档,指针放在文件末尾,追加内容,也可用'w'
k.write(novel)
#写进文件中
k.close()
#关闭文档
关于文件操作后续补充
- 爬虫伦理
通常情况下,服务器不太会在意小爬虫,但是,服务器会拒绝频率很高的大型爬虫和恶意爬虫,因为这会给服务器带来极大的压力或伤害。服务器将爬取条件会写在Robots
协议。
Robots
协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”(Robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的,哪些不可以。
如何查看网站的robots协议呢,很简单,在网站的域名后加上/robots.txt
就可以了。以淘宝为例
User-agent: Baiduspider #百度爬虫
Allow: /article #允许访问 /article.htm
Allow: /oshtml #允许访问 /oshtml.htm
Allow: /ershou #允许访问 /ershou.htm
Allow: /$ #允许访问根目录,即淘宝主页
Disallow: /product/ #禁止访问/product/
Disallow: / #禁止访问除 Allow 规定页面之外的其他所有页面
User-Agent: Googlebot #谷歌爬虫
Allow: /article
Allow: /oshtml
Allow: /product #允许访问/product/
Allow: /spu
Allow: /dianpu
Allow: /oversea
Allow: /list
Allow: /ershou
Allow: /$
Disallow: / #禁止访问除 Allow 规定页面之外的其他所有页面
…… # 文件太长,省略了对其它爬虫的规定,想看全文的话,点击上面的链接
User-Agent: * #其他爬虫
Disallow: / #禁止访问所有页面
协议里最常出现的英文是Allow
和Disallow
,Allow
代表可以被访问,Disallow
代表禁止被访问。而且有趣的是,淘宝限制了百度对产品页面的爬虫,却允许谷歌访问。
当准备爬取网站资源是,首先查看协议是否被允许,同时需要限制爬虫速度,避免服务器压力过大
一图总结: