安装requests库
方法是:在Mac电脑里打开终端软件(terminal),输入pip3 install requests,然后点击enter即可;Windows电脑里叫命令提示符(cmd),输入pip install requests 即可。
爬虫第一步、获取数据
requests.get()方法
import requests #引入requests库。
requests [riˈkwests] n. 请求,要求( request的名词复数 ); 需要; 所请求的事物; 申请书
res = requests.get(‘URL’) #requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。我们把这个响应返回的结果赋值给变量res
requests.get()发送了请求,然后得到了服务器的响应。服务器返回的结果是个Response对象,现在存储到了我们定义的变量res中。
print(type(res)) #打印变量res的数据类型
这代表着:res是一个对象,属于requests.models.Response类。好,既然已经知道res是一个Response对象了,我们也就可以去了解它的相应属性和方法了。
Response对象常用的四个属性:
Response读作: [risˈpɔns]中文意思n.响应.回答,答复;反应
属性一、response.status_code 用法
status[ˈsteitəs] n.状况;地位;资格;身份;情形
code[kəud]n.代码,代号;电码
print(res.status_code)#打印变量res的响应状态码,以检查请求是否成功
**
属性二、response.content
**
content 读作:[ˈkɔntent]n.(pl.)–内容;书报内容 ,
它能把Response对象的内容以二进制数据的形式返回,适用于图片、音频、视频的下载 示例:
pic = res.content
#新建了一个文件ppt.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。
#图片内容需要以二进制wb读写。
photo = open(‘ppt.jpg’,‘wb’)
#获取pic的二进制内容
photo.write(pic)
#关闭文件
photo.close()
属性三、response.text
这个属性可以把Response对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。例:
import requests
res = requests.get(……….网址)
#把Response对象的内容以字符串的形式返回
novel=res.text
#现在,可以打印小说了,但考虑到整章太长,只输出800字print(novel[:800])
属性四、response.encoding
它能帮我们定义Response对象的编码。事实上,requests.get()发送请求后,我们得到一个Response对象,其中,requests模块会对数据的编码类型做出自己的判断。
用法示例:
# 引用requests库
import requests
# 下载《三国演义》第一回,我们得到一个对象,它被命名为res
res=requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md')
# 定义reponse对象的编码为utf-8。
res.encoding='utf-8'
# 把Response对象的内容以字符串的形式返回
novel=res.text
# 打印小说的前800个字。
print(novel[:800])
遇上乱码的时候,才考虑用res.encoding,一般不用。
总结
可以看到,爬虫的第0步:获取数据,本质就是通过URL去向服务器发出请求,服务器再把相关内容封装成一个Response对象返回给我们,这是通过requests.get()实现的,而我们获取到的response对象下有四个常用的属性。要注意这种从URL到Response这种操作对象的转换关系。
robots协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”(robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的,哪些不可以。
淘宝的robots协议 ( http://www.taobao.com/robots.txt)示例:
User-agent: Baiduspider # 百度爬虫
Allow: /article # 允许访问 article
Allow: /oshtml