Python爬虫之request模块

1. 请求方式

# 介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3)
# 注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求

1. Request = requests.rquest(method, url, **kwargs)  # 构造一个请求
	# ethod(6个)  head/get/post/put/patch/delete

2. requests.head(url, **kwargs)

3. requests.get(url, params=None, **kwargs)
	# params  # 字典或者字节序列

4. requests.post(url, data=None , json=None, **kwargs)
	# data  # 字典字节序列或者文件,Rquest的内容
	# json  # json格式的数据,Request的内容

5. requests.put(url, data=None, **kwargs)  #data # 字典字节序列或者文件,Rquest的内容

6. requests.patch(url, data=None, **kwargs)  #data # 字典字节序列或者文件,Rquest的内容  

7. requests.delete(url, *kwargs)

8. requests.options(url)
	# Preflighted Requests是CORS中一种透明服务器验证机制。
	# 预检请求首先需要向另外一个域名的资源发送一个 HTTP OPTIONS 请求头,其目的就是为了判断实际发送的请求是否是安全的。
	# 跨域资源共享(CORS) 是一种机制
"""
1. params # 字典或者字节序列

2. data # 字典字节序列或者文件,Rquest的内容

3. json # json格式的数据,Request的内容 

4. headers # 字典,HTTP定制头

5. cookies # 字典或者cookiejar,Request中的cookie

6. auth # 元组,支持HTTP认证功能 

7. files # 字典类型,传输文件
#fs = {"files":open("文件名","rb")}
#r = requests.request("POST", url, files=fs)

8. timeout # 设置超时时间,单位为秒 

9. proxies #字典类型,设定代理服务器
#pxs = {"http":"ip地址1","https":"ip地址2"}

10. allow_redirect重定向开关

11. stream立即下载开关

12. verify认证ssl证书开关  # 访问危险网站

13. cert本地ssl证书路径
"""

2. get请求

import requests

"""
GET请求
HTTP默认的请求方法就是GET
     * 没有请求体
     * 数据必须在1K之内!
     * GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:
       1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
       2. 点击页面上的超链接也一定是GET请求
       3. 提交表单时,表单默认使用GET请求,但可以设置为POST
"""

payload = {‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘}
r = requests.get("http://httpbin.org/get", params=payload)  # params可变个数的

3. post请求

"""
POST请求
(1). 数据不会出现在地址栏中
(2). 数据的大小没有上限
(3). 有请求体
(4). 请求体中如果存在中文,会使用URL编码!

注意:
   1、对于登录来说,应该输错用户名或密码然后分析抓包流程,用脑子想一想,输对了浏览器就跳转了,还分析个毛线,累死你也找不到包
  2、要做登录的时候一定记得要把cookie先清除;
  3、requests.session():中间的cookie都不用自己分析了,有用的没用的都给放进来了、
  4、response.cookie.get_dict()    #获取cookie
"""  

4. response属性

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"}

url = "http://www.baidu.com"

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

print(response)  # <Response [200]>

ret = response.request  # <PreparedRequest [GET]>
print(ret)

ret = response.headers
print(ret)

ret = response.url
print(ret)

ret = response.status_code
print(ret)

ret = response.text  # 返回是str类型的数据
print(ret)
# Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 response.text 之时,Requests 会使用其推测的文本编码。
# 你可以找出 Requests 使用了什么编码,并且能够使用 response.encoding 属性来改变它

ret = response.content  # 返回是bytes类型的数据
print(ret)

coo = response.cookies
print(coo)  # <RequestsCookieJar[<Cookie H_PS_PSSID=1420_21094_30495_22157 for .baidu.com/>, <Cookie delPer=0 for .baidu.com/>, <Cookie BDSVRTM=0 for www.baidu.com/>, <Cookie BD_HOME=0 for www.baidu.com/>]>
coo = response.cookies.get_dict()
print(coo)  # {‘H_PS_PSSID‘: ‘1420_21094_30495_22157‘, ‘delPer‘: ‘0‘, ‘BDSVRTM‘: ‘0‘, ‘BD_HOME‘: ‘0‘}

ret = response.json()
print(ret)

ret = response.encoding  # 从http中猜测编码  # 还可以通过这个属性设置正确的编码
print(ret)  # ISO-8859-1

ret = response.apparent_encoding  # 从内容中分析出编码,这个更加准确
print(ret)  # utf-8

ret = response.elapsed  # 流逝了多少时间
print(ret)

ret = response.history  # [<Response [302]>]
print(ret)
# 默认情况下,除了request.head(), Requests 会自动处理所有重定向。可以使用响应对象的 history 方法来追踪重定向。
# Response.history 是一个 Response 对象的列表,为了完成请求而创建了这些对象。这个对象列表按照从最老到最近的请求进行排序。
# 重定向:浏览器发送请求,服务器返回重定向的状态码和location,没有响应体。浏览器会自动再发送给location的url一次请求,才能得到响应体。
# Request URL: https://static.zhihu.com/heifetz/main.app.585bb6255dc0a63109f3.js
# Referer: https://www.zhihu.com/signin?next=%2F  # 从哪个网页过来的(去请求js)
# Location:https://www.zhihu.com/signin?next=%2F  # 重定向到这个url

  

  

原文地址:https://www.cnblogs.com/yzg-14/p/12190146.html

时间: 2024-10-03 10:13:05

Python爬虫之request模块的相关文章

爬虫之request模块

爬虫之request模块 request简介 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求 #安装:pip3 install requests #各种请求方式:常用的就是requests.get()和requests.post() >>> import

Python爬虫教程-09-error 模块

Python爬虫教程-09-error模块 今天的主角是error,爬取的时候,很容易出现错,所以我们要在代码里做一些,常见错误的处,关于urllib.error URLError URLError 产生的原因: 1.无网络连接 2.服务器连接失败 3.找不到指定的服务器 4.URLError是OSError的子类 案例v9文件:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py09error.py # 案例v9 # URLError的使用 fro

Python爬虫连载10-Requests模块、Proxy代理

一.Request模块 1.HTTP for Humans,更简洁更友好 2.继承了urllib所有的特征 3.底层使用的是urllib3 4.?开源地址:https://github.com/requests/requests 5.中文文档?:https://requests.readthedocs.io/zh_CN/latest/ 6.先安装这个包:pip install requests 7.get请求 (1)requests.get() (2)requests.request("get&

python flask的request模块以及在flask编程中遇到的坑

一.首先来讲讲遇到的坑: 1.linux下package的打包引用: 1 """ 2 路径结构如下: 3 ./project 4 ./bin 5 ./api 6 """ 7 #要在bin目录下的main.py中引用api目录下的apilib.py中的内容 8 import sys 9 sys.path.append("../") 10 from api.apilib import func 2.运行大系统时候,你在/root下

Python爬虫进阶——urllib模块使用案例【淘宝】

很多时候呢,我们都是读取本地HTML文件来进行爬虫练手,但每次都要手打不同的HTML明显耗时耗力: 还有些小伙伴不喜欢F12,偏偏喜欢在Pycharm中查看HTML的源代码: -- 难道每次都只能"复制--新建--粘贴--保存"一条龙服务吗? 不不不,我们还有Python的第三方库--urllib. urllib模块是模拟浏览器去访问URL地址,然后拿到服务器响应回来的数据,也就是整个HTML文件. 代码如下: import urllib.request as ur # urlopen

python爬虫入门request 常用库介绍

什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫. 其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据. 你可以爬去妹子的图片,爬取自己想看看的视频..等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取 爬虫的本质 模拟浏览器打开网页,获取网页中我们想要的那部分数据 浏览器打开网页的过程

Python爬虫之urllib模块1

本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬疑故事的网站,同时也是因为这个网站在编码上面和一些大网站的博客不同,并不那么规范,所以对于初学者还是有一定的挑战性的.我打算把这个爬虫分三次讲,所以每次都先完成一个小目标(当然不是一个亿啦),这次课我们先爬取当前页面的并且下载第一篇文章.第二次课我们就将爬取当前页面的=所有的链接进行下载,第三次课我们将把整个板块的文章都下载下来. 演示

Python中出现request模块导入错误

python项目中 from urllib.request import urlopen ,导入request出问题,而进行完 pip install request 安装后,仍会出现该错误.错误提示:ImportError: No module named request 问题分析:python 3.x版本与2.x版本不兼容的问题,在python 2.x中 urlopen 模块在urllib2中.解决方法:改为from urllib2 import urlopen. 版本区别具体可参考:htt

python json requests request 模块

1.json 通过Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据. 之前使用这个模块时,都是随用随查,浅尝辄止,对模块的功能了解不深. 随着使用次数的增加,我对这个功能完善的模块有了更多的了解,记录如下. json.loads 将字符串装换成python基本数据类型 json.dumps 将python数据类型转换成字符串方式返回 json a = {:} (a,(a)) c = json.dumps(a) (