Python 爬虫基础(1)
在网页上搜索需要的信息,浏览器交流的对象不只有我们,还有服务器,服务器就类似于一个超级电脑,它可以计算和存储大量数据,并且在互联网中相互传输数据。
爬取数据的步骤:
-
首先,在浏览器上输入网址(URL),浏览器向服务器传达了我们想要访问某个网页的需求,这个过程叫做【请求】,紧接着,服务器把我们想要访问的网站数据发送给浏览器,这个过程叫做【响应】。
所以浏览器和服务器之间,先请求,后响应,有这么一层关系。
- 当服务器把数据响应给浏览器之后,浏览器并不会把数据丢给我们,因为这些数据是用计算机的语言写的,浏览器还要把这些数据翻译成我们看得懂的样子,这是浏览器做的另一项工作【解析数据】。
- 拿到的数据中,挑选出对我们有用的数据,这是【提取数据】。
- 最后把这些有用的数据保存好,这是【存储数据】。
总结:
. 获取数据(爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。)
. 解析数据(爬虫程序会把服务器返回的数据解析成我们能读懂的格式。二进制或字符串等等)
. 提取数据(爬虫程序再从中提取出我们需要的数据。)
. 存储数据 (爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析)
爬虫的工作原理:
爬虫代码详细介绍:
获取数据之前先安装好requests库,requests库可以帮我们下载网页源代码,文本,图片,甚至是音频,下载本质上是向服务器发送请求并得到响应。
requests.get()
具体用法:
import requests
#引入requests库
res = requests.get('URL')
#requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。
#我们把这个响应返回的结果赋值在变量res上。
import requests
res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')
print(type(res))
#打印变量res的数据类型
运行结果:
可以看到这里的res其实是类,它是requests.models.Response的类,它也有几个方法
-
response.status_code
检查请求是否成功
import requests
res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png')
print(res.status_code)
#打印变量res的响应状态码,以检查请求是否成功
运行结果:
(显示了200,这个数字代表服务器同意了请求,并返回了数据给我们)
-
response.content
把response对象转换为二进制数据的形式返回,适用于图片,音频,视频的下载
import requests
res=requests.get('URL')
#发送请求,并把返回的结果放在变量res中
pic=res.content
#把response对象以二进制数据的形式返回
photo=open('ppt.jpg','wb')
#新建了一个文件ppt.jpg
#图片内容需要以二进制wb写入
photo.write(pic)
#获取pic的二进制内容
photo.close()
-
response.text
把response对象转换为字符串数据的形式返回,适用于文字,网页源代码的下载。
import requests
#引用requests库
res=requests.get('URL')
#下载文章,得到一个对象,被命名为res
novel=res.text
#把response对象的内容以字符串的形式返回
print(novel[:800])
#只打印小说的一部分
把下载的文本写入本地文件里面:
import requests
res=requests.get('URL')
novel=res.text
k=open('小说.txt','a+')
#以追加的形式打开一个文件
k.write(novel)
k.close
#关闭文档
-
response.encoding
定义response对象的编码,有时候下载东西到本地会出现乱码,这表示网页编写的编码跟我们编写的编码格式不一样,这种时候需要指定编码格式,跟网页保持一直
res=requests.get(''URL)
res.encoding='gbk'
#这个地方还是乱码的话,那就试试UTF-8
novel=res.text
print(novel[:800])
Robots 协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”,通过这个协议可以知道哪些页面是可以爬取的,哪些是不可以的。
在网站的域名后面加上 /robots.txt 就可以
上一篇: python——爬虫(1)
下一篇: Tomcat项目部署—动态部署