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库相关推荐

  1. Python 网络爬虫笔记2 -- Requests库实战

    Python 网络爬虫笔记2 – Requests库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:P ...

  2. Python网络爬虫与信息提取—requests库入门

    requests的学习笔记 requests库自动爬取HTML页面,自动网络请求提交 此博客为中国大学MOOC北京理工大学<Python网络爬虫与信息提取>的学习笔记 requests库的 ...

  3. Python 网络爬虫笔记5 -- Beautiful Soup库实战

    Python 网络爬虫笔记5 – Beautiful Soup库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. ...

  4. Python 网络爬虫笔记3 -- Beautiful Soup库

    Python 网络爬虫笔记3 – Beautiful Soup库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程 ...

  5. Python 网络爬虫笔记9 -- Scrapy爬虫框架

    Python 网络爬虫笔记9 – Scrapy爬虫框架 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...

  6. Python 网络爬虫笔记6 -- 正则表达式

    Python 网络爬虫笔记6 – 正则表达式 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Python网 ...

  7. Python 网络爬虫笔记11 -- Scrapy 实战

    Python 网络爬虫笔记11 – Scrapy 实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...

  8. Python 网络爬虫笔记10 -- Scrapy 使用入门

    Python 网络爬虫笔记10 – Scrapy 使用入门 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接: ...

  9. Python 网络爬虫笔记8 -- 股票数据定向爬虫

    Python 网络爬虫笔记8 – 股票数据定向爬虫 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyth ...

最新文章

  1. SQL Server 2008 R2 中不能删除复制(replication) 的解决方法
  2. php怎么把字符转成大写,php怎么把字符串转换为大写
  3. js解释器rhino查看执行环境
  4. 海量数据挖掘MMDS week4: 推荐系统之隐语义模型latent semantic analysis
  5. js ajax 传输list,jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签...
  6. rtlinux linux实时补丁,(九)RTLinux补丁以及cyclictest
  7. docker 更改阿里云镜像
  8. 金融与量化分析 一; 金融 股票知识入门
  9. 智慧社区的现状分析及发展前景
  10. 使用Jasypt对SpringBoot配置文件加密(数据源为SpringBoot默认的数据源HikariDataSource)
  11. Excel公式-文本查找函数
  12. 字符映射表没有所有字体(专用字符),以及显示空白的解决办法
  13. 华科计算机硕士毕业论文,华科硕士论文格式
  14. 利用CSS计数函数counter()实现计数
  15. 用户行为分析-如何用数据驱动增长
  16. 保存tensor至本地文件
  17. c++:定义函数Product计算两个浮点数数的乘积(定义函数)
  18. 上海国家会计学院(SNAI)亚利桑那州立大学(ASU)合作办学EMBA项目打造兼具金融财务和服务管理专长的领袖人才!
  19. 微鱼 php,微鱼微信管理系统
  20. vue刷新页面的时候,跳转到别的网页

热门文章

  1. 单引号内的双引号内的双引号怎么写
  2. 类C编译器 C代码实现
  3. js源码 模仿 jquery的ajax的获取数据(get,post )的请求封装
  4. STM32 CJSON解析说明
  5. css07家用电器分类
  6. Windows控制台程序“选定模式”的问题
  7. 这些基本职业技术---programmer
  8. SQL Server日期计算
  9. SpringMVC 中xml 配置多数据源
  10. 【博客搬家旧文】剑指offer [ java ] 面试题10 斐波那契数列