考研调剂信息爬取,以“小木虫”为例

ps:最近发现这篇文章多了不少游览量,看来随着疫情的好转一直搁置的研究生复试终于是提上了日程,为了更方便大家参考,把数据维护了一下,调剂信息已经更新到今天(4月25日),资源链接放在文末,需要的注意去重处理。

近年来,考研的形势一年严峻过一年,但除了少部分上岸的幸运儿,更多的还是陪跑的炮灰。高分落榜数见不鲜,调剂是重要的补救措施,但由于信息的不对称,很多人其实本可以有更好的选择却生生错过了机会。

小木虫调剂,一个专门发布研究生复试调剂信息的版块,分为招生信息和学生信息两部分,考生关注的主要是前者。
跟大部分论坛一样,搜索功能很坑,页面也不友好。为了更快、更精准地找到需要的调剂信息,考虑把招生信息逐条爬取下来(包括标题、子页面url、学校、专业、招生人数以及发布时间),放到excel里进行筛选,标记合适的再跳转到相应的子页面获知详情。
考研调剂信息爬取,以“小木虫”为例_第1张图片
爬虫工具还是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条。
考研调剂信息爬取,以“小木虫”为例_第2张图片
ε=(´ο`*)))唉,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

你可能感兴趣的:(爬虫(Python))