Python爬虫之两种urlencode编码发起post请求方式

背景

闲来无事想爬一下牛客网的校招薪资水平及城市分布,最后想做一个薪资水平分布的图表出来

于是发现牛客使用的是application/x-www-form-urlencoded的格式

测试

首先可以先用apipost等测试工具先测试一下是否需要cookie之类的,发现是不需要的,通过urlencode编码的方式也能够请求到数据

于是开始写代码

coding

这里给出两种方式:

首先使用错误的编码格式肯定是拿不到数据的

①通过urllib
python 复制代码
import requests
import time
import json
from urllib.parse import urlencode
import urllib.request

timestamp = time.time()
timestamp_milliseconds = int(timestamp*1000)
newcode_job_url = f"https://www.nowcoder.com/np-api/u/job/square-search?_={timestamp_milliseconds}"

form_data = {
    "careerJobId": "",
    "jobCity": "",
    "page": 1,
    "query": "开发",
    "random": "true",
    "recommend": "false",
    "recruitType": 1,
    "salaryType": 2,
    "pageSize": 20,
    "requestFrom": 1,
    "order": 0,
    "pageSource": 5001,
    "visitorId": "4cd1adf2-a80d-49e5-82a5-5fcc17227813"
}

form_data["jobCity"] = "北京"
# 需要手动编码
form_data = urlencode(form_data).encode()
request = urllib.request.Request(newcode_job_url)
response = urllib.request.urlopen(request,form_data)
print(response.read().decode())
②通过requests(建议)

通过requests简直不要太方便,因为requests会自动使用合适的编码格式进行编码

python 复制代码
import requests
import time
import json
from urllib.parse import urlencode
import urllib.request

timestamp = time.time()
timestamp_milliseconds = int(timestamp*1000)
newcode_job_url = f"https://www.nowcoder.com/np-api/u/job/square-search?_={timestamp_milliseconds}"

form_data = {
    "careerJobId": "",
    "jobCity": "",
    "page": 1,
    "query": "开发",
    "random": "true",
    "recommend": "false",
    "recruitType": 1,
    "salaryType": 2,
    "pageSize": 20,
    "requestFrom": 1,
    "order": 0,
    "pageSource": 5001,
    "visitorId": "4cd1adf2-a80d-49e5-82a5-5fcc17227813"
}

form_data["jobCity"] = "北京"
response = requests.post(newcode_job_url, data=form_data)
print(response.text)

结果

相关推荐
言乐69 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
言乐610 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
yl453010 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿11 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
for_ever_love__11 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI12 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
I Am a robert girl12 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航198312 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程
沙漠之主12 小时前
Python 教学设计资料:从入门到实战的完整课程方案
爬虫·python
ebiobiz14 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu