Python批量获取高校基本信息

本文开启Python网络爬虫系列小项目,以获取高校数据为需求,包括高校排行和基本信息,采用多种数据存储方式。通过抓包分析获取接口信息,编写接口请求代码,使用协程异步访问提高速度,还解决了Redis报错问题,最后展示运行效果并附上源码。


前言

为了更好的掌握数据处理的能力,因而开启Python网络爬虫系列小项目文章。

  1. 小项目小需求驱动,每篇文章会使用两种以上的方式(Xpath、Bs4、PyQuery、正则等)获取想要的数据。
  2. 博客系列完结后,将会总结各种方式。

一、需求

  • 获取高校数据

    • 高校排行(软科综合、校友会综合、武书连)
    • 基本信息(博士点、硕士点、创建时间、占地面积、学校地址)
  • 多种数据存储方式

    • 本地文件存储

    • redis

    • MongoDB

二、分析

F12 打开抓包工具,刷新https://www.gaokao.cn/school/search接口页面

在这里插入图片描述

name.json 接口包含所有的高校id

在这里插入图片描述

进入学校详情页,获取到info.json接口信息

在这里插入图片描述

数据可以直接通过请求接口即可返回
已获取学校id(一共2820个数据,可以用上协程异步访问提高获取的数据的速度)
已获取学校信息的接口https://static-gkcx.gaokao.cn/www/2.0/json/live/v2/school/102/info.json(只需要修改下学校id即可访问其它学校信息)

三、处理

编写获取大学id的接口


import requests
import json
HEADERS = {
   
   "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}

# 获取大学school_id
def get_school_id():
    url= "https://static-data.gaokao.cn/www/2.0/school/name.json"
    res = requests.request("GET",url=url,headers=HEADERS)
    res.encoding = "utf-8"
    # 转为json格式
    data = json.loads(res.text)
    return data

获取一次以后,本地可以进行处理提取学校id

import re
def get_id():
    f = open("name.txt", "r", encoding="utf-8")
    f1 = f.read()
    deal = re.compile(r"'school_id': '(?P<id>.*?)'",re.S)
    result = deal.findall(f1)
    # print(len(result))
    f.close()
    return  result

编写访问学校信息的接口请求


def get_school_info_1():
    url = "https://static-data.gaokao.cn/www/2.0/school/3419/info.json"
    res = requests.request("GET",url=url,headers=HEADERS)
    res.encoding = "utf-8"
    # 转为json格式
    data = json.loads(res.text)
    return data

协程异步访问接口请求(本地文件存储)

import asyncio
import aiohttp
import aiofiles


# 获取学校详细信息
async def get_school_info(url,sem):
    try:
        async with sem:
            async with aiohttp.ClientSession() as session:
                # 发送请求
                async with session.get(url) as res
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值