首先你要了解HTTP请求
首先你要了解HTTP请求的一些知识
http请求是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。GET 请求指定的页面信息,并返回实体主体。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
get请求与response类的使用方法参考https://blog.csdn.net/scx_qsnl/article/details/89787511
post不像get请求直接将数据放在请求上,而是通过表单,xml或者json等来存取数据的,Python要来模拟这个过程,首先要找到URL和数据,而数据在Python中用字典的形式表示,话不多说,看例子
我们这里以某网站的登录为实例,打开网站,输入用户名密码和验证码,点击登录,用fiddler抓取数据(fiddler下载地址和使用方法自行百度)
这里我们可以看到,这是一个post请求,请求的url是http://211.83.32.12/default2.aspx,而请求的数据,就是最下面那一行,直接看Python代码
python代码:
import requests##引入包
url="http://211.83.32.12/default2.aspx"##抓包抓取的地址
data={
'__VIEWSTATE':'dDwxNTMxMDk5Mzc0Ozs%2BMM2TyUnM1mFmHhddLHEfoT6ZqRM%3D',
'txtUserName':'123',
'Textbox1':'',
'TextBox2':'456',
'txtSecretCode':'789',
'RadioButtonList1':'%D1%A7%C9%FA',
'Button1':'',
'lbLanguage':'',
'hidPdrs':'',
'hidsc':''
}##向服务器发送的数据,用fiddler抓包获取的数据
req=requests.post(url,data)##发出请求,接受返回的内容
print(req.text)##以文本打印返回的内容
可以看到返回的数据,也是一个html,因为我们这里用户名、密码和验证码都是随便输入的,服务器返回了个验证码错误,但由于编码的问题,使得中文的显示出现了问题,至于解决方法可以使用str类的编码方法,也可以使用response类的encoding方法