Python 网络爬虫笔记1 -- Requests库
Python 网络爬虫笔记1 – Requests库
Python 网络爬虫系列笔记是笔者在学习嵩天老师的《Python网络爬虫与信息提取》课程及笔者实践网络爬虫的笔记。
课程链接:Python网络爬虫与信息提取
参考文档:
Requests 官方文档(英文)
Requests 官方文档(中文)
Beautiful Soup 官方文档
re 官方文档
Scrapy 官方文档(英文)
Scrapy 官方文档(中文)
一、Requests库安装
介绍: Requests库主要用来获取HTML网页文件
pip 安装:
pip install requests
导入模块:
import requests
测试:
import requests# 访问百度首页
r = requests.get('http://www.baidu.com')
# 连接状态,连接成功为200
print(r.status_code)
# 百度首页内容,html
print(r.text)
二、方法
1、request() – 构造请求
函数原型:
request(method, url, **kwargs)
参数:
- method:请求的方法,有:‘GET’,‘HEAD’,‘POST’,‘PUT’,‘PATCH’,‘DELETE’
- url:请求的URL链接
- **kwargs: 13个可选参数
- params: 字典或字节序列,作为参数增加到url中
- data:字典、字节序列或文件对象,作为Request的内容
- json:JSON格式的数据,作为Request的内容
- headers: 字典,HTTP定制头
- cookies:字典或CookieJar,Request中的cookie
- files:字典类型,传输文件
- auth:元组,支持HTTP认证功能
- timeout: 设定超时时间,单位为秒
- allow_redirects:True/False,默认为True,重定向开关
- proxies: 字典类型,设定访问代理服务器,可以增加登录认证
- verify:True/False,默认为True,认证SSL证书开关
- stream:True/False,默认为True,获取内容立即下载开关
- cert: 本地SSL证书路径
返回: Response 对象,有以下属性和方法
- status_code:HTTP请求的返回状态,200表示连接成功,404表示失败
- text:HTTP响应内容的字符串形式,即rl对应的页面内容
- encoding:从HTTP header中猜测的响应内容编码方式,如果header中不存在charset则认为编码为ISO‐8859‐1,也是text解码的编码格式
- apparent_encoding:从内容中分析出的响应内容编码方式,当header中不存在charset时,encoding应赋值为apparent_encoding
- content:HTTP响应内容的二进制形式
实例:
import requests# request 使用'GET'方法创建连接,获得http://python123.io首页的内容
r = requests.request('GET', 'http://python123.io/index')
print(r.text)
2、get() – 获取HTML网页
函数原型:
get(url, params=None, **kwargs)
参数:
- url:拟获取页面的url链接
- params:url中的额外参数,字典或字节流格式
- **kwargs:其它的12个控制访问的参数
返回: Response 对象
实例:
import requests# 修改url链接实现登入操作
kv = {'email': 'xxxx@qq.com', 'password': 'xxxx'}
r = requests.get('http://python123.io/index/login', params=kv)
print(r.url)
=> https://python123.io/index/login?email=xxxx%40qq.com&password=xxxx# 设置超时时间
r = requests.get('http://www.baidu.com', timeout=10)# 设定访问代理服务器
pxs = { 'http': 'http://user:pass@10.10.10.1:1234' 'https': 'https://10.10.10.1:4321' }
r = requests.get('http://www.baidu.com', proxies=pxs)
3、head() – 获取HTML网页头信息
函数原型:
head(url, **kwargs)
参数:
- url:拟获取页面的url链接
- **kwargs:12个控制访问的参数
返回: Response 对象
实例:
import requests# 只获取HTML网页的头信息
r = requests.head('https://www.baidu.com')
print(r.headers)
4、post() – 向HTML网页提交POST请求
函数原型:
post(url, data=None, json=None, **kwargs)
参数:
- url:拟更新页面的url链接
- data:字典、字节序列或文件,Request的内容
- json:JSON格式的数据,Request的内容
- **kwargs:其它的11个控制访问的参数
返回: Response 对象
实例:
import requests# post请求,添加Request的内容
kv = {'key1': 'value1', 'key2': 'value2'}
body = '主体内容'
r1 = requests.post('https://www.baidu.com', data=kv)
r2 = requests.post('https://www.baidu.com, data=body)
r3 = requests.post('https://www.baidu.com', json=kv)# post请求,修改请求的头信息,伪装为浏览器请求
hd = {'user‐agent': 'Chrome/10'}
r4 = requests.post('https://www.baidu.com', headers=hd)# post请求,传输文件
fs = {'file': open('data.xls', 'rb')}
r4 = requests.post('https://www.baidu.com', files=fs)
5、put() – 向HTML网页提交PUT请求
函数原型: 必须将URL位置中所有字段一并提交到URL,未提交字段被删除
put(url, data=None, **kwargs)
参数:
- url:拟更新页面的url链接
- data:字典、字节序列或文件,Request的内容
- **kwargs:其它的12个控制访问的参数
返回: Response 对象
6、patch() – 向HTML网页提交局部修改请求
函数原型: 仅需提交URL位置中要修改的局部信息,节省网络带宽
patch(url, data=None, **kwargs)
参数:
- url:拟更新页面的url链接
- data:字典、字节序列或文件,Request的内容
- **kwargs:其它的12个控制访问的参数
返回: Response 对象-
7、delete() – 向HTML页面提交删除请求
函数原型:
delete(url, **kwargs)
参数:
- url:拟删除页面的url链接
- **kwargs:12个控制访问的参数
返回: Response 对象
三、爬取网页的通用代码框架
Requests库异常:
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError HTTP | 错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
抛出异常的方法:
requests.raise_for_status():如果不是200,产生异常requests.HTTPError
爬取网页框架:
import requestsdef get_html_text(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return '产生异常'if __name__ == '__main__':url = 'http://www.baidu.com'print(get_html_text(url))
Python 网络爬虫笔记1 -- Requests库相关推荐
- Python 网络爬虫笔记2 -- Requests库实战
Python 网络爬虫笔记2 – Requests库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:P ...
- Python网络爬虫与信息提取—requests库入门
requests的学习笔记 requests库自动爬取HTML页面,自动网络请求提交 此博客为中国大学MOOC北京理工大学<Python网络爬虫与信息提取>的学习笔记 requests库的 ...
- Python 网络爬虫笔记5 -- Beautiful Soup库实战
Python 网络爬虫笔记5 – Beautiful Soup库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. ...
- Python 网络爬虫笔记3 -- Beautiful Soup库
Python 网络爬虫笔记3 – Beautiful Soup库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程 ...
- Python 网络爬虫笔记9 -- Scrapy爬虫框架
Python 网络爬虫笔记9 – Scrapy爬虫框架 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...
- Python 网络爬虫笔记6 -- 正则表达式
Python 网络爬虫笔记6 – 正则表达式 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Python网 ...
- Python 网络爬虫笔记11 -- Scrapy 实战
Python 网络爬虫笔记11 – Scrapy 实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...
- Python 网络爬虫笔记10 -- Scrapy 使用入门
Python 网络爬虫笔记10 – Scrapy 使用入门 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接: ...
- Python 网络爬虫笔记8 -- 股票数据定向爬虫
Python 网络爬虫笔记8 – 股票数据定向爬虫 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyth ...
最新文章
- SQL Server 2008 R2 中不能删除复制(replication) 的解决方法
- php怎么把字符转成大写,php怎么把字符串转换为大写
- js解释器rhino查看执行环境
- 海量数据挖掘MMDS week4: 推荐系统之隐语义模型latent semantic analysis
- js ajax 传输list,jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签...
- rtlinux linux实时补丁,(九)RTLinux补丁以及cyclictest
- docker 更改阿里云镜像
- 金融与量化分析 一; 金融 股票知识入门
- 智慧社区的现状分析及发展前景
- 使用Jasypt对SpringBoot配置文件加密(数据源为SpringBoot默认的数据源HikariDataSource)
- Excel公式-文本查找函数
- 字符映射表没有所有字体(专用字符),以及显示空白的解决办法
- 华科计算机硕士毕业论文,华科硕士论文格式
- 利用CSS计数函数counter()实现计数
- 用户行为分析-如何用数据驱动增长
- 保存tensor至本地文件
- c++:定义函数Product计算两个浮点数数的乘积(定义函数)
- 上海国家会计学院(SNAI)亚利桑那州立大学(ASU)合作办学EMBA项目打造兼具金融财务和服务管理专长的领袖人才!
- 微鱼 php,微鱼微信管理系统
- vue刷新页面的时候,跳转到别的网页