python笔记 爬虫精进·第0课 【初识爬虫,爬虫库requests,requests.get(),status_code,content,encoding】
爬虫四个步骤
获取数据
爬虫程序会根据提供的网址,向服务器发起请求,然后返回数据。
解析数据
爬虫程序把服务器返回的数据解析成我们能读懂的格式。
提取数据
爬虫程序再从中提取出需要的数据。
储存数据
爬虫程序把有用的数据保存起来,便于日后使用和分析。
爬虫库 requests
requests 简介
requests 是一个功能强大、简单易用的 HTTP 请求库,可以使用 pip install requests 命令进行安装
requests 使用
requests.get()的使用
使用示例:
import requests #引入requests库 res = requests.get('URL') #requests.get是在调用requests库中的get()方法,它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。 #我们把这个响应返回的结果赋值在变量res上。
示例1
从某小说网址,下载小说故事
import requests #引入requests库 res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') #发送请求,并把响应结果赋值在变量res上
Response对象的常用属性
1.get 方法
该方法用于向目标网址发送请求,接收响应
该方法返回一个 Response 对象,其常用的属性和方法列举如下:
response.url:返回请求网站的 URL
【常用属性】response.status_code:检查请求是否成功
【常用属性】response.encoding:定义response对象的编码
response.cookies:返回响应的 Cookie 信息
response.headers:返回响应头
【常用属性】response.content:把response对象转换为二进制数据
【常用属性】response.text:把response对象转换为字符串数据
response.json():返回 dict 类型的响应体,相当于 json.loads(response.text)
2.exceptions 模块
exceptions 是 requests 中负责异常处理的模块,包含下面常见的异常类:
Timeout:请求超时
ConnectionError:网络问题,例如 DNS 故障,拒绝连接等
TooManyRedirects:请求超过配置的最大重定向数
示例应用 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,证明请求成功,其他数据如下:
1xx 请求收到 示例:100 继续提出请求
2xx 请求成功 示例:200 成功
3xx 重定向 示例:300 应使用代理访问
4xx 客户端错误 示例:403 禁止访问
5xx 服务器端错误 示例:503 服务器不可用
示例应用 response.content——用来下载图片、音频、视频
把Response对象的内容以二进制数据的形式返回,适用于图片、音频、视频的下载
如下载某张图片,代码示例
import requests res = requests.get('https://res.pandateacher.com/2018-12-18-10-43-07.png') #发出请求,并把返回的结果放在变量res中 pic=res.content #把Reponse对象的内容以二进制数据的形式返回 photo = open('ppt.jpg','wb') #新建了一个文件ppt.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。 #图片内容需要以二进制wb读写。 photo.write(pic) #获取pic的二进制内容 photo.close() #关闭文件
示例应用 response.text——用来下载文字、网页源代码
把Response对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。
如下载三国演义文章,代码示例
import requests res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/sanguo.md') #下载《三国演义》第一回,我们得到一个对象,它被命名为res novel=res.text #把Response对象的内容以字符串的形式返回 print(novel[:800]) #现在,可以打印小说了,但考虑到整章太长,只输出800字看看就好。
示例应用 response.encoding——用来定义Response对象的编码
定义对象的编码:目标数据本身是什么编码是未知的。用requests.get()发送请求后,我们会取得一个Response对象,其中,requests库会对数据的编码类型做出自己的判断。但是!这个判断有可能准确,也可能不准确。如果判断不准确,就会出现一堆乱码,那我们就可以去查看目标数据的编码,然后再用res.encoding把编码定义成和目标数据一致的类型即可。
应用示例:
res.encoding='gbk' #定义Response对象的编码为gbk res.encoding='utf-8' #定义Reponse对象的编码为utf-8
获取文章内容,爬虫,并进行保存到本地
代码如下:
import requests res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/exercise/HTTP%E5%93%8D%E5%BA%94%E7%8A%B6%E6%80%81%E7%A0%81.md') res.encoding='utf-8' novel=res.text file1 = open(r'C:\Users\shibazi\Desktop\scores.txt','w',encoding='utf-8') file1.write(novel) file1.close()
- python笔记 爬虫精进·第1课 【查看html网页代码,标签,元素,网页头,网页体,属性】
- 基于python3.4.3的Requests2.18.4爬虫学习系列之一 安装及初识
- Python爬虫之个人笔记(二):requests模块应用,发送get/post请求,获取响应
- Python爬虫学习纪要(八):Requests 库学习笔记3
- Python 爬虫学习笔记一: requests 模块
- Python学习笔记1——爬虫初识BeautifulSoup
- python爬虫笔记<一:POST和GET数据传送>
- 【python爬虫学习笔记】05 利用requests-bs4的大学排名定向爬虫的实例
- python爬虫 基于requests模块发起ajax的get请求实现解析
- Python爬虫(入门+进阶)学习笔记 1-3 使用Requests爬取豆瓣短评
- python爬虫学习笔记-requests用法
- python3爬虫requests.get(url)出现http 500错误
- Python爬虫学习纪要(六):Requests 库学习笔记1
- python 3 爬虫学习笔记(1) —— 初识BeautifulSoup
- 【极客学院】-python学习笔记-3-单线程爬虫 (request安装遇到问题及解决,应用requests提取信息)
- Python爬虫(入门+进阶)学习笔记 1-2 初识Python爬虫
- Python爬虫学习纪要(十):Requests 库学习笔记5
- 【python爬虫】module 'requests' has no attribute 'get'
- Python爬虫学习纪要(九):Requests 库学习笔记4