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 相关文章推荐
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
python3.x实现发送邮件功能
May 22 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
对pandas中Series的map函数详解
Jul 25 Python
python hook监听事件详解
Oct 25 Python
在pycharm中使用git版本管理以及同步github的方法
Jan 16 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
django自带调试服务器的使用详解
Aug 29 Python
Python数组并集交集补集代码实例
Feb 18 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
利用Python实现自动扫雷小脚本
Dec 17 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
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
javascript测试题练习代码
2012/10/10 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
社区志愿者心得体会
2014/01/03 职场文书
单位作风建设自查报告
2014/10/23 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers
JS setTimeout与setInterval的区别
2022/04/20 Javascript
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android