Python日记
Python日记
最近抽空学了一些爬虫有关的知识
写了一个可以对服务器发送post请求的小程序
import urllib
import urllib.request
def sendpost(url):
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74"
}
data = bytes(urllib.parse.urlencode({"username":"","password":""}),encoding = "utf-8")
request = urllib.request.Request(url,data=data,headers = head,method="post")
response = urllib.request.urlopen(request)
print(response.read())
if __name__ == "__main__":
sendpost("http://httpbin.org/post")
这个是urllib库写的,如果服务器有authorization验证还可以加一个base64库加密一下用户名和密码然后添加至header上
下面是基于requests库编写的功能差不多的小程序
import requests
def sendpost(url):
head={
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74",
"Content-Type": "application/json"
}
data={"username":"1","password":"1"}
try:
request = requests.post(url=url,headers=head,data=data)
print(request.content)
except Exception:
print("error",end="\n")
if __name__ == "__main__":
sendpost("http://httpbin.org/post")
相比较之下,我认为requests库较urllib库更易使用,并且当返回值不为200ok时,urllib库并不能(也可能是我没学到)提取服务器返回的错误json,而requests库却可以很轻松的使用json对象,并且requests库可以直接使用auth函数来实现上文中需要用base64库来完成的加密过程