爬虫post收尾以及cookie加代理

news2024/11/26 11:38:07

爬虫post收尾以及cookie加代理

目录

1.post请求收尾

2.cookie加代理

post收尾

post请求传参有两种格式,载荷中有请求载荷和表单参数,我们需要做不同的处理。

1.表单数据:data=字典传参
content-type:
application/x-www-form-urlencoded; charset=UTF-8(这种方法是上一篇文章讲到的)
查询字符串参数:跟在url后面的参数
2.请求载荷:json=字典
content-type 告知服务端传入的参数类型是什么类型
application/json;charset=UTF-8 传入的参数是个json格式数据

两种处理办法:

一:
1- 伪装指定content-type
2- 传参还是使用data参数,参数值是一个json字符串
二:
直接使用json参数=字典

第一种方法:

import requests
url = 'https://join.qq.com/api/v1/position/searchPosition?timestamp=1727440821893'
headers = {
  'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
  like Gecko) Chrome/129.0.0.0 Safari/537.36',
  'content-type':'application/json;charset=UTF-8'
}
data = '{"projectIdList":[1],"keyword":"","bgList":[],"workCountryType":0,"workCityList":
[],"recruitCityList":[],"positionFidList":[],"pageIndex":3,"pageSize":10}'
res = requests.post(url,data=data,headers=headers)
print(res.text)

第二种方法:

import requests
url = 'https://join.qq.com/api/v1/position/searchPosition?timestamp=1727440821893'
data = {"projectIdList":[1],"keyword":"","bgList":[],"workCountryType":0,"workCityList":
[],"recruitCityList":[],"positionFidList":[],"pageIndex":3,"pageSize":10}
res = requests.post(url,json=data)
print(res.text)

cookie

cookie是存储在浏览器中的一组键值对,用来保存当前用户身份
存在时效性的,会过期,过期的时间一般都是服务端指定
如果访问的目标网站需要cookie, 处理的办法:

1.直接复制浏览器中登录之后的cookie, 伪装(请求头)中有一个cookie
存储在客户端(浏览器)中的一组键值对, 能够用于保存一些状态, 但有个要求:必须要先登录。

import requests
url = 'https://my.4399.com/forums/index-getMtags?type=game&page=1'
headers = {
  'cookie':'UM_distinctid=18f5d84be7ab12-0d4fcf3a09be2e-26001d51-1fa400-18f5d84be7bf28;
  _4399tongji_vid=171526094309656; _4399stats_vid=17152609431943750; _gprp_c="";
  smidV2=202405111957567078c442e11c09b2676e719231c52c1f00ffe8aacc95bce90; home4399=yes;
  Puser=3073859018; Pnick=%E4%B8%AD%E9%87%8E%E5%B7%A7%E5%AE%89%E6%9B%BC%E5%A6%AE; Qnick=;
  Sauth=4078826105%7C3073859018%7C1724907026%7C1725771373%7Cad31369854452fbfe2af%7C%E4%B8%AD%
  E9%87%8E%E5%B7%A7%E5%AE%89%E6%9B%BC%E5%A6%AE%7C%E4%B8%AD%E9%87%8E%E5%B7%A7%E5%AE%89%E6%9B%B
  C%E5%A6%AE%7C47e7e4cfced0bcb5a19d88b03d094613;
  Hm_lvt_334aca66d28b3b338a76075366b2b9e8=1724391240,1724906618,1724932650;
  ptusertype=my.4399_login; zone_guide_date=1724947200; zone_guide_time=2;
  _4399tongji_st=1724933289; USESSIONID=e61b6eb4-3e07-48dd-b354-c9fe6ef545d2;
  Hm_lvt_5c9e5e1fa99c3821422bf61e662d4ea5=1724906645,1724932678,1724933289;
  HMACCOUNT=13108745FF137EDD;
  Hm_lvt_e5a07b5994f78634294b9c347a5be7d2=1724906645,1724932678,1724933289; phlogact=l1493;
  Uauth=4399|1|2024829|my.|1724933589815|d59a0688a9891db73745cf920f83aa63;
  Pauth=4078826105|3073859018|t3ce7n2813b76b1e854c4b9428c211e1|1724933589|10002|690950f30d878
  aa6ed7e245af0c9fb18|2; ck_accname=3073859018; Xauth=6b199edef659802ab9fac4d9eea16604;
  Hm_lpvt_e5a07b5994f78634294b9c347a5be7d2=1724933589;
  Hm_lpvt_5c9e5e1fa99c3821422bf61e662d4ea5=1724933589;
  Pmtime=85fe178bc1e94ed171d3%7C1724933590; ol=1'
}

res = requests.get(url,headers=headers)
res.encoding = 'utf-8'
print(res.text)

爬虫获取群组数据:
1- 找数据所在的url
https://my.4399.com/forums/index-getMtags?type=game&page=1
2- 请求成功之后,得到的反馈信息是要先登录(明明浏览器已经登录了,为什么还要登录,因为浏览器和代码没有关系)
3- 如何解决登录问题:
1- 带上登录之后的cookie:当你登录完成之后,会保存一些用户信息在里面,cookie中保存的内容不会永久有效,时间期
限(服务端决定)
优点:简单直接,缺点:会过期

2.通过模拟登录,登录成功之后获取cookie(大部分网站实现登录,密码都进行了加密,所以这种方式不适用所有
网站,但是4399可以直接传入明文,服务端没做密码是否为密文的检测,只做了密码是否正确的检测)

# 1- 登录请求
# 2- 获取数据请求
# 模拟登录
login_url = 'https://ptlogin.4399.com/ptlogin/login.do?v=1'
# post请求传入参数
import requests
data = {
  'loginFrom':'uframe',
  'postLoginHandler':'refreshParent',
  'layoutSelfAdapting':'false',
  'externalLogin':'qq',
  'displayMode':'embed',
  'layout':'vertical',
  'appId':'u4399',
  'css':'https://uc.img4399.com/root/css/ptlogin.css?a3993b7',
  'mainDivId':'embed_login_div',
  'includeFcmInfo':'false',
  'level':'0',
  'regLevel':'4',
  'userNameLabel':'4399用户名',
  'userNameTip':'请输入4399用户名',
  'welcomeTip':'欢迎回到4399',
  'sec':'1',
  'password':'hkyx8888', # 4399服务端支持密码传入明文,但是其它网站的登录不一定支持
  'username':'3073859018',
}
# 登录之后的响应对象 如果登录成功,服务端返回cookie,保存在响应对象中
login_res = requests.post(login_url,data=data)
# 目标url
url = 'https://my.4399.com/forums/index-getMtags?type=game&page=2'
res = requests.get(url,cookies=login_res.cookies)
res.encoding = 'utf-8'
print(res.text)

因为访问群组页面,需要先登录账号
爬虫也可以先登录,服务端会返回cookie(包含了用户信息)
再获取目标url的时候带上登录后的cookie

小tips:
我们可以看到data里面的数据, 有这么多的键值对, 都从网上赋值过来的文本数据, 那怎么一键变为键值对数据呢?
这个其实很简单, 我们在pycharm里面打开替换文本的工具(Ctrl+r快捷键打开)。

注意: 需要点亮星星哦, 就是最上面中间的地方, .*那个符号。

代码区自动会帮我们选中需要替换的区域
我们点击全部替换, 然后再给它放到一个字典里面去。

d = {
    'hca': '7AB3E94A75916BE3',
    'cc': '1',
    'ck': '1',
    'cl': '24-bit',
    'ds': '1536x960',
    'vl': '264',
    'ep': '5029,566',
    'et': '3',
    'ja': '0',
    'ln': 'zh-cn',
    'lo': '0',
    'lt': '1727441846',
    'rnd': '1855248226',
    'si': 'e5a07b5994f78634294b9c347a5be7d2',
    'su': 'https://my.4399.com/forums/mtags',
    'v': '1.3.2',
    'lv': '2',
    'sn': '25299',
    'r': '0',
    'ww': '1523',
    'u': 'https://my.4399.com/forums/mtag-78097'
}

以后大家可以多使用这种方法哦, 既方便又快捷, 但是需要注意的是在我们把修改好的数据全部放到新的字典里面去的时候, 每一句话的最后一行都要加分号。

实战:
获取腾讯招聘的招聘项目每一个框里面的数据(应届生的岗位投递信息, 就最下方最大的红色框里面的信息)。

自己先尝试的去做一做, 不要马上看答案哦。

参考答案:

import requests

pageIndex = 1
count = 1
# 分页获取数据
while True:
    url = 'https://join.qq.com/api/v1/position/searchPosition?timestamp=1727532633390'
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
        "cookie": "UserInfo=1kij6FX225E8Xm5SldigGuGG8cYEEgz+nyKdgtlbiSLV5y/bsU4j/m2d1S8+dYWCQx0yLKUpGj4XJ3ZRiN5VrTuBbk3TnGGbSg7faVuROyuNOoS5p+gSyNqCS6nc51VLWrECSpiILWyPk2xP32aoS1cWGP37hTHHQzLZeJYd/QsSTJ/sSuDenS9g26yEgmphPnHE0Bfq/EDG1XZUS41Pni2nwHYHeEgEfhNspL25x67XXcVhZg+b7NYaSnklM/I2GLEH8c3gXpVU6/4jC4i6kg==; loginMark=02"
    }
    data = {
        'bgList': [],
        'pageIndex': pageIndex,
        'pageSize': 10,
        'positionFidList': [],
        'projectIdList': [1, 2, 12, 14],
        'recruitCityList': [],
        'workCityList': [],
        'workCountryType': 0
    }
    response = requests.post(url, headers=headers, json=data)
    data = response.json()
    if data['data']['positionList'] is not None:
        for i in data['data']['positionList']:
            # 工作岗位
            work_title = i['positionTitle']
            # 应届生的背景
            bgs = i['bgs']
            # 工作地点
            workCities = i['workCities']
            print(count)
            print("工作岗位:", work_title)
            print("应届生的背景:", bgs)
            print("工作地点:", workCities)
            count += 1
    else:
        break
    pageIndex += 1
这个实战题你写出来了吗?如果写出来的话, 给自己一个掌声哦。👏

以上就是爬虫post收尾以及cookie的所有内容了, 如果有哪里不懂的地方,可以把问题打在评论区, 欢迎大家在评论区交流!!!
如果我有写错的地方, 望大家指正, 也可以联系我, 让我们一起努力, 继续不断的进步.
学习是个漫长的过程, 需要我们不断的去学习并掌握消化知识点, 有不懂或概念模糊不理解的情况下,一定要赶紧的解决问题, 否则问题只会越来越多, 漏洞也就越老越大.
人生路漫漫, 白鹭常相伴!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32单片机_(HAL库)】6-2【串口通信UART、USART】串口通信框图

USB转TTL 串口通信协议 USART框图 UART:通用异步收发器;USART:通用同步异步收发器 STM32F103C8T6支持三个串口通信

yolo参数调节

1-weight 不同版本的神经网络 可以在这下载复制 2 source图片路径或者文件夹路径 3 img size 尺寸(尽量与神经网络模型匹配) 4 4 -conf-thres 简单理解就是模型识别成功概率超过这一标准才会显示 5 iou多区域重合 (重合比例)…

HTML入门教程一口气讲完!(下)\^o^/

HTML 表单 HTML 表单和输入 HTML 表单用于收集不同类型的用户输入。 在线实例 创建文本字段 (Text field) 本例演示如何在 HTML 页面创建文本域。用户可以在文本域中写入文本。 创建密码字段 本例演示如何创建 HTML 的密码域。 (在本页底端可以找到更多实例。&a…

MySQL基础教程(二):检索数据和排序检索数据

本篇文章主要介绍通过 MySQL 中的 SELECT, DISTINCT, ORDER BY, LIMIT语句完成最基本的数据检索和对检索到的数据进行排序。最基本的数据检索是指我们通过 SELECT 语句查询表中的某些列或者行。对检索到的数据进行排序是指对数据以某种规则显示,例如按照某个字段升序…

QD1-P20 CSS 简单了解

本节学习:简单了解CSS,什么是什么CSS,如何在HTML中使用CSS? ‍ 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p20 CSS是什么? CSS(层叠样式表,Cascading Style Sheets)是一种样…

【Java面试——基础知识——Day2】

1.面向对象基础 1.1 面向对象和面向过程的区别 面向过程编程(POP):面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。面向对象编程(OOP):面向对象会先抽象出对象&#…

Jetbrains Fleet1.41 发布:新特性杀疯了

决定我们自身的不是过去的经历 而是我们自己赋予经历的意义 因为过去的经历 是否影响他 如何影响他 完全由他自己决定 有时候 克服恐惧最好的办法 就是把恐惧说出来 前几日 jetbrains fleet1.41 正式发布了,这次的发布可谓是真的诚意满满,包含了多个开发者非常喜欢的小…

Bootstrap 4 多媒体对象

Bootstrap 4 多媒体对象 引言 Bootstrap 4 是目前最受欢迎的前端框架之一,它提供了一套丰富的工具和组件,帮助开发者快速构建响应式和移动设备优先的网页。在本文中,我们将重点探讨 Bootstrap 4 中的多媒体对象(Media Object)组件,这是一种用于构建复杂和灵活布局的强大…

Java:数据结构-LinkedList和链表(2)

一 LinkedList LinkedList的方法的实现 1.头插法 public class MyLinkedList implements IList{static class ListNode{public int val;public ListNode next;public ListNode prev;public ListNode(int val){this.valval;}}public ListNode head;public ListNode last;Overr…

基于stm32的HAL库的串口实现不定长数据收发(三)(接收中断)

串口实现不定长数据收发(接收中断) 1头文件 #include "uart1.h" #include "string.h" #include "stdio.h" #include "sys.h"#define UART1_RX_BUF_SIZE 128 //接收 #define UART1_TX_BUF_SIZE 64 //发送 发送…

量化选股:原理与实战指南(一)

🌟作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~🍊个人主页:小高要坚强的博客🍓当前专栏:《Python之量化交易》🍎本文内容:量化选股:原理与实战指南(一)🌸作者“三要”格言:要坚强、要努力、要学习 目录 引言 一、量化选股的基本概…

docker入门(二)之容器命令及私有仓库的部署(本地和harbor)

容器命令: 1.启动容器 接下来演示在docker下运行一个ubuntu系统,从中学习各容器命令。 --name"容器新名字" 为容器指定一个名称(不指定的话会随机分配一个名字)。 -d: 后台运行容器并返回容器ID,也就启动守护式容器(后台运行) -…

【Golang】关于Go语言中的定时器原理与实战应用

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【计算机网络 - 基础问题】每日 3 题(三十八)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

ROS2 “通信方式” 参数服务器

为什么加“通信方式”引号,因为我觉得他就不算通信,最多最多就是一个动态加载参数方式 所以ros通信方式就三种,topic service action 别犟,犟就是你对! 常用的 param参数方法如下: # declare_parameter…

基于Java的旅游网站管理系统—计算机毕业设计源码39235

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游网站等问题,对旅游网站进行…

项目计划书,项目经理日常文档,项目管理计划,项目总体实施计划,总体测试计划,总体运维计划,总体开发计划(word原件获取)

项目开发计划包括项目描述、项目组织、成本预算、人力资源估算、设备资源计划、沟通计划、采购计划、风险计划、项目过程定义及项目的进度安排和里程碑、质量计划、数据管理计划、度量和分析计划、监控计划和培训计划等。 软件资料清单列表部分文档: 工作安排任务书…

Shuffle Net系列详解 (4) Shuffle Net V2实践部分讲解 for pytorch版本

Shuffle Net 系列 实践部分1.文件划分2.Block(差异文件)3.Network(差异文件)3.总结 实践部分 在看代码之前先叠加一个甲,本文并未跑出来这个实验结果。实验条件有限,论文中采用的ImageNet dataset 数据集有些太大了。后续会出一个简化版本的代码进行实践…

探索Spring Cloud Config:构建高可用的配置中心

目录 认识Spring Cloud ConfigConfig Server读取配置文件步骤1:(1)创建config-server项目(2)在config-server中开启Config Server功能(3)在config-server配置文件进行相关配置(4&…

深入理解 Transformer:构建先进 NLP 模型的关键技术

目录 一、Transformer 为何如此重要?二、Transformer 的核心组成部分1. 注意力机制2. 位置编码3. 前馈神经网络 三、Transformer 的训练方法1. 无监督预训练2. 有监督微调 四、Transformer 的应用场景五、总结与展望 在自然语言处理(NLP)的领…