python爬虫利器之requests库的用法(超全面的爬取网页案例)


Posted in Python onDecember 17, 2020

requests库

利用pip安装:
pip install requests

基本请求

req = requests.get("https://www.baidu.com/")
req = requests.post("https://www.baidu.com/")
req = requests.put("https://www.baidu.com/")
req = requests.delete("https://www.baidu.com/")
req = requests.head("https://www.baidu.com/")
req = requests.options(https://www.baidu.com/)

1.get请求

参数是字典,我们可以传递json类型的参数:

import requests
from fake_useragent import UserAgent#请求头部库
headers = {"User-Agent":UserAgent().random}#获取一个随机的请求头
url = "https://www.baidu.com/s"#网址
params={
  "wd":"豆瓣"  #网址的后缀
}

requests.get(url,headers=headers,params=params)

python爬虫利器之requests库的用法(超全面的爬取网页案例)

返回了状态码,所以我们要想获取内容,需要将其转成text:

#get请求

headers = {"User-Agent":UserAgent().random}
url = "https://www.baidu.com/s"
params={
  "wd":"豆瓣"
}

response = requests.get(url,headers=headers,params=params)
response.text

2.post 请求

参数也是字典,也可以传递json类型的参数:

import requests 
from fake_useragent import UserAgent

headers = {"User-Agent":UserAgent().random}

url = "https://www.baidu.cn/index/login/login" #登录账号密码的网址
params = {
  "user":"1351351335",#账号
  "password":"123456"#密码
}

response = requests.post(url,headers=headers,data=params)
response.text

python爬虫利器之requests库的用法(超全面的爬取网页案例)

因为这里需要一个登录的网页,我这里就随便用了一个,没有登录,所以显示的结果是这样的,如果想要测试登录的效果,请找一个登录的页面去尝试一下。

3.IP代理

采集时为避免被封IP,经常会使用代理,requests也有相应 的proxies属性。

#IP代理

import requests 
from fake_useragent import UserAgent

headers = {"User-Agent":UserAgent().random}
url = "http://httpbin.org/get" #返回当前IP的网址

proxies = {
  "http":"http://yonghuming:123456@192.168.1.1:8088"#http://用户名:密码@IP:端口号
  #"http":"https://182.145.31.211:4224"# 或者IP:端口号
}

requests.get(url,headers=headers,proxies=proxies)

代理IP可以去:快代理去找,也可以去购买。
http://httpbin.org/get。这个网址是查看你现在的信息:

python爬虫利器之requests库的用法(超全面的爬取网页案例)

4.设置访问超时时间

可以通过timeout属性设置超时时间,一旦超过这个时间还没获取到响应内容,就会提示错误。

#设置访问时间
requests.get("http://baidu.com/",timeout=0.1)

python爬虫利器之requests库的用法(超全面的爬取网页案例)

5.证书问题(SSLError:HTTP)

ssl验证。

import requests 
from fake_useragent import UserAgent #请求头部库

url = "https://www.12306.cn/index/" #需要证书的网页地址
headers = {"User-Agent":UserAgent().random}#获取一个随机请求头

requests.packages.urllib3.disable_warnings()#禁用安全警告
response = requests.get(url,verify=False,headers=headers)
response.encoding = "utf-8" #用来显示中文,进行转码
response.text

python爬虫利器之requests库的用法(超全面的爬取网页案例)

6.session自动保存cookies

import requests
from fake_useragent import UserAgent

headers = {"User-Agent":UserAgent().chrome}
login_url = "https://www.baidu.cn/index/login/login" #需要登录的网页地址
params = {
  "user":"yonghuming",#用户名
  "password":"123456"#密码
}
session = requests.Session() #用来保存cookie

#直接用session 歹意requests 
response = session.post(login_url,headers=headers,data=params)

info_url = "https://www.baidu.cn/index/user.html" #登录完账号密码以后的网页地址
resp = session.get(info_url,headers=headers)
resp.text

因为我这里没有使用需要账号密码的网页,所以显示这样:

python爬虫利器之requests库的用法(超全面的爬取网页案例)

我获取了一个智慧树的网页

#cookie 

import requests
from fake_useragent import UserAgent

headers = {"User-Agent":UserAgent().chrome}
login_url = "https://passport.zhihuishu.com/login?service=https://onlineservice.zhihuishu.com/login/gologin" #需要登录的网页地址
params = {
  "user":"12121212",#用户名
  "password":"123456"#密码
}
session = requests.Session() #用来保存cookie

#直接用session 歹意requests 
response = session.post(login_url,headers=headers,data=params)

info_url = "https://onlne5.zhhuishu.com/onlinWeb.html#/stdetInex" #登录完账号密码以后的网页地址
resp = session.get(info_url,headers=headers)
resp.encoding = "utf-8"
resp.text

python爬虫利器之requests库的用法(超全面的爬取网页案例)

7.获取响应信息

代码 含义
resp.json() 获取响应内容 (以json字符串)
resp.text 获取相应内容(以字符串)
resp.content 获取响应内容(以字节的方式)
resp.headers 获取响应头内容
resp.url 获取访问地址
resp.encoding 获取网页编码
resp.request.headers 请求头内容
resp.cookie 获取cookie

到此这篇关于python爬虫利器之requests库的用法(超全面的爬取网页案例)的文章就介绍到这了,更多相关python爬虫requests库用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python写的一个squid访问日志分析的小程序
Sep 17 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
Python 元类实例解析
Apr 04 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
Python列表对象实现原理详解
Jul 01 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
深入了解NumPy 高级索引
Jul 24 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
python使用smtplib模块发送邮件
Dec 17 #Python
python实现计算器简易版
Dec 17 #Python
利用Python实现自动扫雷小脚本
Dec 17 #Python
用python读取xlsx文件
Dec 17 #Python
Python实现自动整理文件的脚本
Dec 17 #Python
Python用access判断文件是否被占用的实例方法
Dec 17 #Python
Python实例教程之检索输出月份日历表
Dec 16 #Python
You might like
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
10条php编程小技巧
2015/07/07 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
js闭包的用途详解
2014/11/09 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
Python数组条件过滤filter函数使用示例
2014/07/22 Python
python实现的希尔排序算法实例
2015/07/01 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
Python的logging模块基本用法
2020/12/24 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
十一个高级MySql面试题
2014/10/06 面试题
音乐节策划方案
2014/06/09 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
2015年企业新年寄语
2014/12/08 职场文书
公积金接收函格式
2015/01/30 职场文书
搞笑老公保证书
2015/02/26 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
javascript数组includes、reduce的基本使用
2021/07/02 Javascript