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)

结果

相关推荐
清水白石00815 分钟前
Free-Threaded Python 实战指南:机遇、风险与 PoC 验证方案
java·python·算法
飞Link33 分钟前
具身智能核心架构之 Python 行为树 (py_trees) 深度剖析与实战
开发语言·人工智能·python·架构
桃气媛媛1 小时前
Pycharm常用快捷键
python·pycharm
Looooking2 小时前
Python 之获取安装包所占用磁盘空间大小
python
WenGyyyL2 小时前
ColBERT论文研读——NLP(IR)里程碑之作
人工智能·python·语言模型·自然语言处理
lxy-up2 小时前
RAG--切片策略
python
ricky_fan2 小时前
(OpenAI)Codex 安装、部署使用方式
python·macos·conda·vim
小王不爱笑1322 小时前
Java 对象拷贝(浅拷贝 / 深拷贝)
java·开发语言·python
Flittly2 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(9)Agent Teams (智能体团队)
python·agent
DevnullCoffe3 小时前
Open Claw × 跨境电商:5个最有价值的 AI Agent 应用场景深度拆解
python·api