python爬虫中requests库怎么用
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下python爬虫中requests库怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python爬虫
千家信息网最后更新 2025年01月20日python爬虫中requests库怎么用异常处理
小编给大家分享一下python爬虫中requests库怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
python爬虫-requests库的用法
requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,requests 允许你发送 HTTP/1.1 请求。指定 URL并添加查询url字符串即可开始爬取网页信息等操作
因为是第三方库,所以使用前需要cmd安装
pip install requests
安装完成后import一下,正常则说明可以开始使用了
基本用法:
requests.get()
用于请求目标网站,类型是一个HTTPresponse类型
import requestsresponse = requests.get('http://www.baidu.com')print(response.status_code) # 打印状态码print(response.url) # 打印请求urlprint(response.headers) # 打印头信息print(response.cookies) # 打印cookie信息print(response.text) #以文本形式打印网页源码print(response.content) #以字节流形式打印
以打印状态码为例,运行结果:
状态码:200,证明请求目标网站正常
若状态码为403一般是目标存有防火墙,触发了反爬策略被限制了IP
各种请求方式:
import requestsrequests.get('http://www.baidu.com')requests.post('http://www.baidu.com')requests.put('http://www.baidu.com')requests.delete('http://www.baidu.com')requests.head('http://www.baidu.com')requests.options('http://www.baidu.com')
基本的get请求
import requestsresponse = requests.get('http://www.baidu.com')print(response.text)
带参数的GET请求:
第一种直接将参数放在url内
import requestsresponse = requests.get("https://www.crrcgo.cc/admin/crr_supplier.html?params=1")print(response.text)
另一种先将参数填写在data中,发起请求时将params参数指定为data
import requestsdata = { 'params': '1',}response = requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?', params=data)print(response.text)
基本POST请求:
import requestsresponse = requests.post('http://baidu.com')
解析json
import requestsresponse = requests.get('http://httpbin.org/get')print(response.text)print(response.json()) #response.json()方法同json.loads(response.text)print(type(response.json()))
简单保存一个二进制文件
import requestsresponse = requests.get('http://img.ivsky.com/img/tupian/pre/201708/30/kekeersitao-002.jpg')b = response.contentwith open('F://fengjing.jpg','wb') as f: f.write(b)
为你的请求添加头信息
import requestsheads = {}heads['User-Agent'] = 'Mozilla/5.0 ' \ '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \ '(KHTML, like Gecko) Version/5.1 Safari/534.50' response = requests.get('http://www.baidu.com',headers=headers)
此方法可以有效地避开防火墙的检测,隐藏自己身份
使用代理
同添加headers方法一样,代理参数也是一个dict这里使用requests库爬取了IP代理网站的IP与端口和类型。因为是免费的,使用的代理地址很快就失效了。
import requestsimport redef get_html(url): proxy = { 'http': '120.25.253.234:812', 'https' '163.125.222.244:8123' } heads = {} heads['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0' req = requests.get(url, headers=heads,proxies=proxy) html = req.text return htmldef get_ipport(html): regex = r'(.+) ' iplist = re.findall(regex, html) regex2 = '(.+) ' portlist = re.findall(regex2, html) regex3 = r'(.+) ' typelist = re.findall(regex3, html) sumray = [] for i in iplist: for p in portlist: for t in typelist: pass pass a = t+','+i + ':' + p sumray.append(a) print('高匿代理') print(sumray)if __name__ == '__main__': url = 'http://www.baidu.com' get_ipport(get_html(url))
获取cookie
import requestsresponse = requests.get('http://www.baidu.com')print(response.cookies)print(type(response.cookies))for k,v in response.cookies.items(): print(k+':'+v)
会话维持
import requestssession = requests.Session()session.get('https://www.crrcgo.cc/admin/crr_supplier.html')response = session.get('https://www.crrcgo.cc/admin/')print(response.text)
证书验证设置
import requestsfrom requests.packages import urllib3urllib3.disable_warnings() #从urllib3中消除警告response = requests.get('https://www.12306.cn',verify=False) #证书验证设为FALSEprint(response.status_code)
超时异常捕获
import requestsfrom requests.exceptions import ReadTimeouttry: res = requests.get('http://httpbin.org', timeout=0.1) print(res.status_code)except ReadTimeout: print(timeout)
异常处理
使用try…except来捕获异常
import requestsfrom requests.exceptions import ReadTimeout,HTTPError,RequestExceptiontry: response = requests.get('http://www.baidu.com',timeout=0.5) print(response.status_code)except ReadTimeout: print('timeout')except HTTPError: print('httperror')except RequestException: print('reqerror')
以上是"python爬虫中requests库怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
参数
代理
信息
状态
爬虫
目标
篇文章
类型
网站
内容
形式
方法
网页
证书
防火墙
防火
验证
有效
简洁
不怎么
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
pdca 软件开发应用
数据库第二章
公安局如何建立数据库
互联网科技公司发展战略
电子商务数据库技术考试广药
网络安全工程师自学可以吗
大学生对网络安全背景
虚拟机域服务器无法管理网络
深圳市网络安全保卫局
db2客户端备份数据库
oa软件开发新报价
艾为软件开发工资
暨大网络安全
数据库添加表中数据库中
印象笔记本地数据库的安全性
王牌竞速怎么登陆以前的服务器
维护网络安全空间主权
剑灵1区哪个服务器人多
做软件开发的是不是需要保密
网络安全范文3000
2018甘肃网络安全宣传
服务器文件管理器在哪里
百战天虫大混子连接不到服务器
网管可以做软件开发工程师吗
网络安全攻防演练脚本
数据库基础层多维层
河南工学院计算机软件开发
如何保持手机网络安全
情感测评软件开发
辽宁塔式服务器经销商云空间