主页
归档
友链
想说点什么
实验室
Python日记
Apr 25 2021

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库来完成的加密过程