一志愿考研失败了,找调剂太麻烦了,直接爬取研招网的调剂信息保存到数据库。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021040910555652.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjU4NjUw,size_16,color_FFFFFF,t_70)
import requests
import json
import pymysql
count = 0
url = 'https://yz.chsi.com.cn/sytj/stu/sytjqexxcx.action'
headers = {
'Accept': '*/*',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'https://yz.chsi.com.cn',
'Referer': 'https://yz.chsi.com.cn/sytj/tj/qecx.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
'Cookie':''
}
type_dict = {}
type_dict['1'] = "全日制"
type_dict['2'] = "非全日制"
def parse_one_page(content):
for item in content:
yield {
'学校名称': item['dwmc'],
'所属学院': item['yxsmc'],
'专业名称': item['zymc'],
'研究方向': item['yjfxmc'],
'培养类型': type_dict[str(item['xxfs'])],
'计划人数': item['qers'],
'最后更新时间已过小时': round(item['gxsj']/60,2),
'余额状态': item['zt'],
'省份': item['ssdm'],
'是否符合调剂要求': item['sfmzyq'],
'发布时间': item['fbsjStr'],
'调剂特殊要求': item['bz']
}
for i in range(50):
if count == 0:
para = {
'pageSize': 20,
'start': '',
'orderBy': '',
'mhcx': 1,
'ssdm2': '',
'xxfs2': '',
'dwmc2': '计算机科学与技术',
'data_type': 'json',
'agent_from': 'wab',
'pageid': ''
}
else:
para = {
'pageSize': 20,
'start': count * 20,
'orderBy': '',
'mhcx': 1,
'ssdm2': '',
'xxfs2': '',
'dwmc2': '计算机科学与技术',
'data_type': 'json',
'agent_from': 'wab',
'pageid': 'tj_qe_list'
}
try:
print("正在收集第{}页\n".format(i+1))
r = requests.post(url, headers=headers, timeout=30, data=para)
count += 1
r.raise_for_status()
r.encoding = 'utf-8'
text = json.loads(r.text)
content = text['data']['vo_list']['vos']
for item in parse_one_page(content):
db = pymysql.connect(host="Localhost", user="root", password="123456", db="yz01", charset="utf8")
cursor = db.cursor()
学校名称 = item['学校名称']
所属学院 = item['所属学院']
专业名称 = item['专业名称']
研究方向 = item['研究方向']
培养类型 = str(item['培养类型'])
计划人数 = item['计划人数']
最后更新时间已过小时 = item['最后更新时间已过小时']
余额状态 = item['余额状态']
省份 = item['省份']
是否符合调剂要求 = item['是否符合调剂要求']
发布时间 = item['发布时间']
调剂特殊要求 = item['调剂特殊要求']
cursor.execute(
'INSERT INTO y01(学校名称,所属学院,专业名称,研究方向,培养类型,计划人数,最后更新时间已过小时,余额状态,省份,是否符合调剂要求,发布时间,调剂特殊要求) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)',
(学校名称,所属学院,专业名称,研究方向,培养类型,计划人数,最后更新时间已过小时,余额状态,省份,是否符合调剂要求,发布时间,调剂特殊要求))
db.commit()
cursor.close()
db.close()
except:
count += 1