最近爬取网站遇到的一些难题总结出来,GET和POST,form data和json,表单数据和请求载荷,python爬取知识

news/2024/7/19 10:16:30 标签: json, 爬虫, python, POST

验证码问题,这个比较简单,保存验证码图片到本地,人工肉眼识别验证码并输入就行.

POST和GET,这是HTTP协议中向网站发送请求的两种方法,

每个网站用的方法不一样,甚至一个网站的每个网页用的方法都不一样,
GET方法最简单,因为它把想要的数据,参数都放到网址里,所以用一条网址直接就能获得网站的数据.

POST方法抓起来就有点难度,因为它想提交的数据参数都不放在网址里,所以比较隐蔽,需要打开浏览器的F12调试模式.在后台查POST都提交了哪些参数数据请求.

在这里插入图片描述
找到要查找的网页,看它用的是POST还是GET.

如果是POST方法,还要看它提交的数据是什么类型,就目前我看到的,有form data和json两种,form data翻译过来是表单数据
在这里插入图片描述
表单数据也比较简单,把表单数据全部复制下来,然后使用POST函数时,当data参数用就行.

python">urlPost = '访问的网址'
dataPost = {
    'ScriptManager1' : "UpdatePanel1|BtnOk",
    '__EVENTTARGET' :   '',
    '__EVENTARGUMENT':  '', 
    'hdkId': '',
    'hdKVal': '',
    'UserId': '',
    'TxtUser': "你的用户名",
    'TxtPass': "你的密码",
    'TxtValidity': codeInput,
    '__VIEWSTATE': "/wEPDwUKMTcyMzM5MjA5NWRka/IEi1yp6Io1kHJcr0iIWwfRleuxsCWDQe+wkzhsi7U=",
    '__VIEWSTATEGENERATOR': "CA0B0334",
    '__EVENTVALIDATION': '/wEdAAi0RfoZ/5gOsqPG+0LQ0gj8WFAEkVvHsmOp+7cfEraaYgSyq8SFAD7uLH+MLLT9ZgDw5DOQjrEKsM9grc5TE0xFJpTN5EWcMzY0vw486EGsUiRUZ9UiTbgc03l5a/zMwdk4iIeEx9Ef2ezD4UG0M+B7OLzwrTSwNq50ccOn3Zx3HhSER2L//xnSM/yrz7p0dGwg23sYy7sBTsovr4ZDP2dX',
    '__ASYNCPOST': 'true',
    'BtnOk':'', 
}
# 访问
responsePost = session.post(url=urlPost,data=dataPost,headers=headers)


还有一种POST提交的数据是json,下边显示的就是请求载荷
在这里插入图片描述
在这里插入图片描述

content-type: application/json;charset=UTF-8
通过上边的content-type查出来它提交的数据是json的,

那使用POST函数时,参数要把data改为使用json

python">cxdata={'txtNumber': '','txtName':'','birthdayStart':'','birthdayEnd':'','txtIdNumber': '','txtTel':'13788888888','txtPleat':'1','txtPrefecture':'1303','txtCity':'10','txtTown': '168','txtHospital':'0','txtVillage':'0','vaccType':'1','isHos':'0','MotherName':'','FatherName':''}
jg=session.post(url=url,json=cxdata,headers=headers)
print(jg.text)

就是如果提交的是表单数据,就用data当post的参数,如果提交的是json,请求载荷的数据,那就用json当post的参数

HTTP content-type
Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。

Content-Type 标头告诉客户端实际返回的内容的内容类型。

语法格式:

Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something

常见的媒体格式类型如下:

text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:

application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:

multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式


http://www.niftyadmin.cn/n/188061.html

相关文章

Git(三)

目录: (1)仓库克隆 (2)抓取和拉取 (3)解决合并冲突 (4)IDEA中使用Git (5)IDEA克隆-更新-解决冲突 (1)仓库克隆 克隆…

看ChatGPT如何回答微博签到数据相关问题。

以下内容完全由chatGPT提供,相对来说,我对它的回答比较满意,但存在不足之处。请各位同学自行甄别ChatGPT回答的内容。以下回答均来自chatgpt,仅代表chatgpt的看法,不代表作者任何观点 1、作为一名博士研究生&#xff…

Vue的基础知识(属性、指令等)

目录 一:容器和Vue的关系 二:注意事项 三:v-bind 3.1 v-bind和v-model的区别 3.2 defineproperty 3.3 数据代理 3.4 Vue中数据代理的应用 3.5 事件修饰符 3.6 键盘绑定修饰符 3.7 计算属性 3.8 监视属性 3.9 深度监视 3.A 绑定样…

微信小程序 |做一款跟ChatGPT下五指棋的小程序

一、写在前面 敢问世间万物,何以解忧? 时下最为火爆的ChatGPT想必够资格来回答一下这个问题。 要想当年AlphaGO打败世界围棋高手李世石,就展露出AI的惊人实力,时隔多年,AI领域在憋了这么多年之后,现如今…

WT588D 应用注意事项

一、芯片及模块部分 1、在模块应用时,要保证模块上的 VCC 输入端电源电压(Flash 存储器电压输入端)的范围在 DC2.8~ 3.5V,可根据实际应用电路来确定是要用二极管降压或是用稳压模块稳压给 WT588D 模块 VCC 端供电。当用 DC3V 给整…

简述四种线上环境建设思路

由线下正式交付到线上之前,我们仍然会做很多的验证和稳定性保障工作。就生产环境、 灰度环境、预发环境、办公网生产环境这四种线上环境的建设进行分析。 1、生产环境 随着业务量增大和业务复杂度升高,我们的软件架构、部署模式、集群规模等等也相应变…

贪心算法及几个经典例子c语言

贪心算法 一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在 当前看来是最好的选择 。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的 局部最优解 。 贪心算法没有固定的算法框架&#xf…

Java设计模式(七)—— 迭代器模式

迭代器模式定义如下:提供一种方法访问一个容器对象中的各个元素,而又勿需暴露该对象的内部细节,是一种只应用于容器对象遍历的设计模式。 适合迭代器模式的情景如下: 遍历集合对象,不需要知道对象在集合中的存储方式用…