当前位置: 首页 > news >正文

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

一、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 requestsurl = "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)
http://www.lryc.cn/news/259094.html

相关文章:

  • ActiveMQ使用指南
  • 动态SQL学习及使用场景(简略)
  • 【算法每日一练]-动态规划(保姆级教程 篇13)POJ2686马车旅行 #POJ3254 玉米田 #POJ1185:炮兵阵地
  • 工业固体废物智能化综合管控平台
  • 玩转大数据12:大数据安全与隐私保护策略
  • Qt工程文件分离、Qtimer定时器、Qt Creator 常用快捷键
  • 验收支撑-软件项目验收计划书
  • SQL注入绕过技术
  • 锂电池基础知识及管理方式总结
  • 小红书基于零信任 SASE 办公安全解决方案,斩获 “IDC 中国 20 大杰出安全项目”
  • html通过CDN引入Vue使用Vuex以及Computed、Watch监听
  • 【LabVIEW学习】5.数据通信之TCP协议,控制电脑的一种方式
  • uview1 的u-tabs组件在微信小程序中会出现横向滚动条
  • 服务器ipv6地址显示“scope global dadfailed tentative noprefixroute”无法连通的问题处理一例
  • 深度学习学习顺序梳理
  • 机器学习实验六:聚类
  • 逆向思考 C. Fence Painting
  • 当当狸AR智能学习图集跨越千年文明传承,邀您“面对面”与虚拟诗人互动对诗
  • CESM笔记——component活动状态+compset前缀解析+B1850,BHIST区别
  • vue 页面跳转时,浏览器上方显示进度条
  • tqdm输出字符串被截断
  • Qt::UniqueConnection和lambda一块用无效
  • 四川技能大赛——2023年四川网信人才技能大赛(网络安全管理员赛项)决赛
  • 死锁(面试常问)
  • GO设计模式——3、抽象工厂模式(创建型)
  • AUTOSAR_PRS_LogAndTraceProtocol文档翻译
  • 自定义比较器
  • 【NLP】如何管理大型语言模型 (LLM)
  • 利用机器学习实现客户细分的实战
  • Tair(4):Tair原理架构