使用python爬取研招网调剂信息

一志愿考研失败了,找调剂太麻烦了,直接爬取研招网的调剂信息保存到数据库。

在这里插入图片描述

# -*- coding: utf-8 -*-
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'
        # print (r.text)
        text = json.loads(r.text)
        content = text['data']['vo_list']['vos']
        for item in parse_one_page(content):
            # print(item)
            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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值