一、python requests爬虫[基础、上传文件、会话维持、代理设置]

2023-12-13 21:44:58

一、requests

1. 发送

解释:向服务器发送请求

1.1 请求页面方式

  1. requests.get('www.baidu.com')
  2. requests.post('www.baidu.com')

1.2请求参数

1.2.1 get
params = {
	"id":16,
	"name":"jack"
}
requests.get('www.baidu.com',params=params) 
# 默认发送字符串

1.2.2 post
params = {
	"id":16,
	"name":"jack"
}
requests.post('www.baidu.com',data=params) #这里要写data
# 默认发送字符串
1.2.3 json格式

解释:发送json数据

params = {
	"id":16,
	"name":"jack"
}
requests.post('www.baidu.com',json=params) #这里要写json
# 发送的json数据

1.3 请求表头

headers={
"User-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Mobile Safari/537.36 Edg/103.0.1264.71"
}
requests.get('www.baidu.com',headers=headers)

2. 接收

解释:接受服务器返回的内容
前要:response = requests.get('www.baidu.com')

2.1 内容

  1. 字符串数据:response.text
  2. json数据:response.json()
  3. 二进制数据:response.content

2.2 属性

  1. 状态码:response.status_code
  2. 返回头:response.headers
  3. cookie:response.cookies #查看数据:类似字典遍历
  4. 请求历史:response.history

3.高级用法

3.1 上传文件

参数:

  1. myfile:开发者自定义的名字,需要自己用开发者工具查看
  2. 字典:i.jpg(自定义的文件名字);open('4.jpg','rb')(选择文件“rb”中b需要写表示二进制读取);'image/jpeg'(文件类型,服务器可能会验证名字)
import requests

url = "http://127.0.0.1:8000/a/go"

files = {
    'myfile': ('i.jpg', open('4.jpg', 'rb'), "image/jpeg")
}
response = requests.post(url, files=files)

3.2 会话维持

解释:访问网站后保存下来cookie用于其它操作

参数:

  1. session = requests.Session() #关键操作
import requests
urla = "https://127.0.0.1"
urlb = "https://127.0.0.1/cookie"

data_a={"create_time": 1659171719, "content": "规范化风格恢复鬼画符"}
data_b={"email":"2@qq.com","pwd":"1234","remember":True}
session = requests.Session()
response = session.post(urlb, verify=False, json=data_b)
print(response.cookies,response.text)
response_b = session.post(urla, verify=False, json=data_a)
print(response_b.text)

3.3 代理设置(Socks代理)

注意:端口以及对应方式一定写对;如果本地代理一定要开全局模式

3.3.1 http代理
import requests
urla = "https://127.0.0.1"
urlb = "https://127.0.0.1/cookie"

dataa={"create_time": 1659171800, "content": "规范化风"}
datab={"email":"2@qq.com","pwd":"12345678a","remember":True}
session = requests.Session()
proxies={
    "http":"http://127.0.0.1:1080",
    "https":"https://127.0.0.1:1080"
}
response = session.post(urlb, verify=False, json=datab,proxies=proxies)
print(response.cookies,response.text)
responseb = session.post(urla, verify=False, json=dataa,proxies=proxies)
print(responseb.text)
3.3.2 socks5代理

安装:pip install requests[socks]

proxies={
    "http":"socks5://127.0.0.1:1080",
    "https":"socks5://127.0.0.1:1080"
}
response = session.post(urlb, verify=False, json=datab,proxies=proxies)

文章来源:https://blog.csdn.net/weixin_46765649/article/details/126042190
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。