ps:最近发现这篇文章多了不少游览量,看来随着疫情的好转一直搁置的研究生复试终于是提上了日程,为了更方便大家参考,把数据维护了一下,调剂信息已经更新到今天(4月25日),资源链接放在文末,需要的注意去重处理。
近年来,考研的形势一年严峻过一年,但除了少部分上岸的幸运儿,更多的还是陪跑的炮灰。高分落榜数见不鲜,调剂是重要的补救措施,但由于信息的不对称,很多人其实本可以有更好的选择却生生错过了机会。
小木虫调剂,一个专门发布研究生复试调剂信息的版块,分为招生信息和学生信息两部分,考生关注的主要是前者。
跟大部分论坛一样,搜索功能很坑,页面也不友好。为了更快、更精准地找到需要的调剂信息,考虑把招生信息逐条爬取下来(包括标题、子页面url、学校、专业、招生人数以及发布时间),放到excel里进行筛选,标记合适的再跳转到相应的子页面获知详情。
爬虫工具还是Python,数据存储用MongoDB,下面上代码。
import numpy as np
import requests
from bs4 import BeautifulSoup
import re
from lxml import etree
import random
import pymongo
import time
from multiprocessing import Pool
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['kaoyan']
information = mydb['tj0221']
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
def get_info(url):
res = requests.get(url,headers=headers,verify=False)
soup = BeautifulSoup(res.text, 'lxml')
titles = soup.select('.forum_body_manage .xmc_lp20')
colleges = soup.select('.forum_body_manage .xmc_lp20+ td')
majors = soup.select('.forum_body_manage td:nth-child(3)')
nums = soup.select('.forum_body_manage td:nth-child(4)')
times = soup.select('.forum_body_manage td:nth-child(5)')
for title,college,major,num,ti in zip(titles,colleges,majors,nums,times):
try:
u=title.a['href']
except KeyError:
u="null"
info = {
'url': u,
'title': title.get_text(),
'college': college.get_text(),
'major': major.get_text(),
'num': num.get_text(),
'time':ti.get_text()
}
information.insert_one(info)
print(url + '完成')
time.sleep(random.randint(3, 8))
if __name__=='__main__':
urls = ['http://muchong.com/bbs/kaoyan.php?&page={}'.format(str(i))
for i in range(1,151)]
pool = Pool(processes=4)
pool.map(get_info, urls)
爬取数据整理后如下,包括1400+调剂信息,2019年12月后截至2020年2月21晚的876条以及更早之前的570条。
ε=(´ο`*)))唉,432只有一条信息,还是上一年的。不过理工科机会还是很多的,希望失落者打起精神,有学上别放弃。
数据文件已上传至百度云,供需要的宝宝们参考。
2019年12月后至2020年2月21日
链接1:https://pan.baidu.com/s/1FlAdxhvwPQCWwe3o1cMYNA
提取码:phe3
更新:
2月22日至2月25日。
链接2:https://pan.baidu.com/s/1lPtE-6r5PqqPrzRoLpRJNg
提取码:093m
2月25日至4月25日
链接3:https://pan.baidu.com/s/1I9owFzDB1bfWsP7KXVGYhQ
提取码:ttov