Skip to content
/ yzw Public

2025最新爬取研招网考研专业数据(硕士目录)| 研招网爬虫(附现成数据)

License

Notifications You must be signed in to change notification settings

freecho/yzw

Repository files navigation

爬取研招网专业信息

创作不易,请给我点个Star⭐️

免责声明

本项目依据 MIT 许可证发布,仅供学习和研究使用,所爬取的数据均来自公开且合法的渠道,且项目设计不会对目标网站造成流量攻击或其他负面影响。请确保在合法合规的前提下使用本项目。

作者不对因使用本项目所导致的任何直接或间接后果承担责任。使用者应自行评估风险并对其行为负责。

介绍

本项目从研招网爬取专业信息,数据存储在 MySQL 数据库中。 使用专业代码-考试方式-院系所-学习方式-研究方向-考试科目组合(四门)这几个作为唯一索引存储数据(可能会漏掉极少数仅仅跟别的专业在是否是退役计划处不同的专业)。

大致情况如图:

截图1 截图2

数据获取

本项目爬取的完整数据已经发布,前往 release页面 下载即可。

使用方法

使用本项目需要具备:下载项目、下载python依赖、创建数据库等非常基础的技能,在Ai协助下0基础大概率也能完成

  1. 克隆项目到本地

    git clone https://github.com/freecho/yzw.git
  2. 安装依赖(建议使用pycharm自带的虚拟环境,python版本建议:3.12)

    pip install -r requirements.txt

    在MySQL中导入数据库文件(yzw.sql)

  3. 修改配置文件 config.yaml 中的数据库连接信息(下面作说明,下面括号内为说明,实际文件内不要携带)

    database:
      host: localhost(MySQL的host地址)
      port: 3306(MySQL端口)
      username: root(MySQL账号)
      password: 123456(MySQL密码)
      name: yzw(数据库名)
    
    interval:
      seconds: 1(爬取平均间隔,单位:秒,强烈建议大于等于1)
    
    # 代理池配置(可选)
    proxy:
      pool_url: "http://127.0.0.1:5010"(代理池API地址)
      enabled: true(是否启用代理功能)
      test_url: "https://www.baidu.com"(代理测试URL)
      test_timeout: 10(代理测试超时时间,单位:秒)
      backup_proxies:(备用代理列表)
        - "127.0.0.1:7890"
        - "127.0.0.1:1080"
        - "127.0.0.1:8080"
  4. 运行(运行main.py即可)

    python main.py

    按照提示输入账号密码或cookie登录。 常规情况使用账号密码登录即可!

    程序启动后会提示选择网络连接方式:

    • 使用代理池:推荐选择,可有效避免IP被封
    • 使用自身IP:如果代理池不可用或不想使用代理

    获取cookie:打开浏览器,登录研招网,按F12打开开发者工具,切换到"网络"(network)选项卡,刷新页面,找到请求头中的Cookie字段,将其复制到输入框中。 图片

代理功能

项目集成了代理池功能,可以有效解决IP被封的问题:

代理使用策略

  1. 优先使用代理:程序启动时会尝试从代理池获取可用代理
  2. 自动切换:当代理失效时,自动切换到下一个可用代理
  3. 降级处理:当所有代理都失败时,自动降级使用自身IP
  4. 错误处理:当自身IP也失败时,记录错误并结束程序

代理池设置

  1. 启用代理池:在 config.yaml 中设置 proxy.enabled: true
  2. 配置代理池地址:设置 proxy.pool_url 为你的代理池API地址
  3. 测试代理功能:运行 python test_proxy.py 测试代理功能

代理池推荐

推荐使用 ProxyPool 项目作为代理池:

# 启动代理池调度程序
python proxyPool.py schedule

# 启动代理池API服务
python proxyPool.py server

断点功能

程序支持两种断点模式:

  1. 自动断点模式:从数据库获取最后一条记录作为断点,自动从上次停止的地方继续爬取
  2. 手动断点模式:手动输入省份名称、学校名称(可选)、专业代码(可选),从指定位置开始爬取

数据导出工具(export_major_csv.py)

本项目提供了一个独立的导出工具 export_major_csv.py,用于将数据库中的 major 表数据导出为 Excel 可直接查看的 csv 文件。

工具特点

  • 支持自定义导出文件名(在脚本开头修改 EXPORT_FILENAME 变量即可)
  • 自动导出所有字段,字段顺序与数据库一致
  • 按省份、学校名称排序,方便查阅
  • 分批导出(每批1000行),即使数据量很大(如14万行)也不会内存爆炸
  • 生成的 csv 文件可直接用 Excel 打开,无乱码

使用方法

  1. 确保已完成数据库配置,并已安装依赖。

  2. 在命令行运行:

    python export_major_csv.py
  3. 导出完成后,会在项目根目录生成你指定的 csv 文件(如 majors.csv)。

  4. 可用 Excel 或 WPS 等表格工具直接打开查看。

如需自定义导出文件名,请直接修改 export_major_csv.py 文件开头的 EXPORT_FILENAME 变量。

经测试速度非常快,不到一分钟就可以导出约14w行数据。

使用说明

总结:随时可以停止,下次运行会找到地方继续爬取,日志如果出现错误,基本就是需要切换IP/账号

本项目按照地区对应学校,遍历学校的所有专业来爬取,重复运行会先从数据库获取到最后抓到的数据,然后快速定位,从相应位置继续爬取,遇到重复的会忽略。

程序启动后会先处理日志中的失败请求,然后开始正常的爬取流程。

如果控制台日志出现:"重试次数过多,放弃当前专业详情抓取",请自行检查网络连接或调整爬取间隔。如果出现"请登录"代表没有登录成功,可能是账号密码错误或账号被限流。

遇到限流,请等待一段时间后再尝试运行,或者切换账号,或者尝试通过cookie登录。(通常需要更换账号+IP)

登录的时候密码错误也可能会提示登录成功,但实际不一定成功,会有影响,请自行确认密码正确性

技术说明

本项目虽然使用多线程技术爬取,但是由于官方对流量限制较强,所以很多地方自断一臂,以适配最佳速度

项目整体逻辑较为简单,单台电脑即可部署

其他问题,请提Issue或邮件联系freccho@qq.com,邮件时请附带Star⭐️本项目的截图

About

2025最新爬取研招网考研专业数据(硕士目录)| 研招网爬虫(附现成数据)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages