1.什么是爬虫
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据
2.爬虫的工作原理
3.爬虫的步骤
第0步:获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。
第1步:解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。
第2步:提取数据。爬虫程序再从中提取出我们需要的数据。
第3步:储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。
用图片这是:
4.体验爬虫
requests.get()
# 引入requests库 import requests # requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。 # 我们把这个响应返回的结果赋值给变量res res = requests.get('URL')
爬虫的类:
我们所以type来看一下res的类型
import requests res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png') # 打印变量res的数据类型 print(type(res))
我们发现了res是一个对象,属于requests.models.Response
类。好,既然已经知道res
是一个Response
对象了,我们也就可以去了解它的相应属性和方法了。
5.Response
对象
response一共有4类
1.response.status_code
import requests res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png') # 打印变量res的响应状态码,以检查请求是否成功 print(res.status_code)
出现了200的状态码,它表示成功了
其他情况的状态码如图所示:
2.response.content
主要作用与图片的下载:
先下载一张提神醒脑图吧!网址:https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=61273508,3612490239&fm=26&gp=0.jpg
我们所以爬虫把它下载下来吧!
# 引入requests库 import requests # 发出请求,并把返回的结果放在变量res中 res = requests.get('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606750678029&di=41cb79de98355b129d4cf07a79782e7d&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fforum%2Fw%3D580%2Fsign%3D8b777317d20735fa91f04eb1ae500f9f%2F43f13af5e0fe99259c5eb85c32a85edf8cb17140.jpg') # 把Reponse对象的内容以二进制数据的形式返回 pic = res.content # 新建了一个文件ppt.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。 # 图片内容需要以二进制wb读写。你在学习open()函数时接触过它。 photo = open('ppt.jpg','wb') # 获取pic的二进制内容 photo.write(pic) # 关闭文件 photo.close()
3.response.text
这个属性可以把Response
对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。
举个例子:
下载三国演义的网址:https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md
import requests # 下载《三国演义》第一回,我们得到一个对象,它被命名为sanguo sanguo=requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') # 把Response对象的内容以字符串的形式返回 kansanguo=sanguo.text # print(kansanguo) # 全部打印 print(kansanguo[:500]) # 规定打印字数
4.response.encoding
它能帮我们定义Response
对象的编码
我们使用response.encoding就可以将内容转化为‘gbk’或‘utf-8’了
1.转化为‘gbk’
# 下载《三国演义》第一回,我们得到一个对象,它被命名为res res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') # 定义Response对象的编码为gbk res.encoding='gbk' # 把Response对象的内容以字符串的形式返回 novel=res.text # 打印小说的前800个字 print(novel[:800])
2.转化为‘utf-8’
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])
现在我们终于学习了爬虫的第0步了,后面还会有更多的在等待着我们