如何用Python爬取全国高校数据?

news2024/11/15 15:38:06

前言

Python是一门强大的编程语言,它可以用于爬取互联网上的各种数据。在这篇文章中,我们将学习如何使用Python爬取全国高校数据,并使用代理IP进行爬取。

本文主要分为以下几个部分:

  1. 数据来源及需求
  2. 安装依赖包及导入模块
  3. 爬取全国高校数据
  4. 使用代理IP
  5. 总结

一、数据来源及需求

我们将从教育部官网爬取全国高校数据,数据包括高校名称、所在地区、办学类型、所属教育部门等信息。

二、安装依赖包及导入模块

在爬取数据之前,我们需要安装一些依赖包,包括requests、beautifulsoup4和pandas。可以使用以下命令安装:

pip install requests beautifulsoup4 pandas

在安装完依赖包后,我们需要导入相应的模块:

import requests
from bs4 import BeautifulSoup
import pandas as pd

三、爬取全国高校数据

首先,我们需要确定爬取的网址。在本文中,我们将从教育部官网爬取全国高校名单,网址为:http://www.moe.gov.cn/s78/A03/moe_560/jytjsj_2015/。

然后,我们需要使用requests库向该网址发送请求,并获取响应:

url = 'http://www.moe.gov.cn/s78/A03/moe_560/jytjsj_2015/'
response = requests.get(url)

接下来,我们需要使用BeautifulSoup库对获取到的响应进行解析。具体来说,我们需要找到包含高校信息的表格,并提取其中的数据。在本文中,我们的数据位于一个名为'main1'的表格中。因此,我们可以使用以下代码对表格进行解析:

soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', id='main1')

然后,我们需要从表格中提取数据并存储到一个列表中。具体来说,我们需要遍历表格中的每一行,并将每一行的信息存储到一个字典中。最后,我们将所有字典存储到一个列表中。代码如下:

data = []
for tr in table.find_all('tr')[1:]:
    tds = tr.find_all('td')
    d = {
        '序号': tds[0].text.strip(),
        '名称': tds[1].text.strip(),
        '所在地区': tds[2].text.strip(),
        '隶属单位': tds[3].text.strip(),
        '办学类型': tds[4].text.strip(),
        '院校特色': tds[5].text.strip(),
    }
    data.append(d)

最后,我们可以使用pandas库将数据存储到一个CSV文件中:

df = pd.DataFrame(data)
df.to_csv('universities.csv', index=None)

完整代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'http://www.moe.gov.cn/s78/A03/moe_560/jytjsj_2015/'
response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', id='main1')

data = []
for tr in table.find_all('tr')[1:]:
    tds = tr.find_all('td')
    d = {
        '序号': tds[0].text.strip(),
        '名称': tds[1].text.strip(),
        '所在地区': tds[2].text.strip(),
        '隶属单位': tds[3].text.strip(),
        '办学类型': tds[4].text.strip(),
        '院校特色': tds[5].text.strip(),
    }
    data.append(d)

df = pd.DataFrame(data)
df.to_csv('universities.csv', index=None)

运行以上代码,我们将在当前目录下生成一个名为'universities.csv'的文件,其中包含了全国高校的信息。

四、使用代理IP

在爬取数据时,我们可能会遇到被网站屏蔽的情况。为了避免这个问题,我们可以使用代理IP进行爬取。代理IP的作用是隐藏我们的真实IP地址,并通过代理服务器向目标网站发送请求。因此,即使目标网站屏蔽了我们的IP地址,我们仍然能够顺利地爬取数据。

首先,我们需要找到可用的代理IP。可以在网上搜索相关的代理IP网站,并从中获取可用的IP地址。然后,我们需要修改代码,将代理IP配置到requests库中。具体来说,我们需要在requests.get()函数中增加proxies参数,指定代理IP的协议、IP地址和端口号。例如,如果我们的代理IP的协议为'http',IP地址为'127.0.0.1',端口号为'8080',那么我们可以这样配置代理IP:

proxies = {
    'http': 'http://127.0.0.1:8080',
    'https': 'https://127.0.0.1:8080',
}
response = requests.get(url, proxies=proxies)

完整代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'http://www.moe.gov.cn/s78/A03/moe_560/jytjsj_2015/'

# 使用代理IP进行爬取
proxies = {
    'http': 'http://127.0.0.1:8080',
    'https': 'https://127.0.0.1:8080',
}
response = requests.get(url, proxies=proxies)

soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', id='main1')

data = []
for tr in table.find_all('tr')[1:]:
    tds = tr.find_all('td')
    d = {
        '序号': tds[0].text.strip(),
        '名称': tds[1].text.strip(),
        '所在地区': tds[2].text.strip(),
        '隶属单位': tds[3].text.strip(),
        '办学类型': tds[4].text.strip(),
        '院校特色': tds[5].text.strip(),
    }
    data.append(d)

df = pd.DataFrame(data)
df.to_csv('universities.csv', index=None)

在上面的代码中,我们将代理IP配置为了本地IP地址。实际使用时,我们需要替换为可用的代理IP地址。

总结

在本文中,我们学习了如何使用Python爬取全国高校数据,并使用代理IP进行爬取。通过本文的学习,相信读者已经了解了Python爬虫的基本原理及其应用。在实际应用中,我们需要考虑到数据的合法性和隐私保护等问题,并严格遵守相关法律法规。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1243967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VOC数据集和COCO数据集直接的相互转换

VOC数据集格式 get_list.py import os import random import shutil# 设置随机种子 random.seed(1000)# 判断Annotations和JpegImages是否对应 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

CCFCSP试题编号:201803-2试题名称:碰撞的小球

一、题目描述 二、思路 1.首先妾身分析这个题目,想要解题,得得解决2个问题。 1)判断小球到达端点或碰撞然后改变方向; 2)每时刻都要改变位置 两个问题都比较好解决,1)只要简单判断坐标&…

【每日一题】2216.美化数组的最少删除数-2023.11.21

题目: 2216. 美化数组的最少删除数 给你一个下标从 0 开始的整数数组 nums ,如果满足下述条件,则认为数组 nums 是一个 美丽数组 : nums.length 为偶数对所有满足 i % 2 0 的下标 i ,nums[i] ! nums[i 1] 均成立 …

黑马点评-10实现用户点赞和点赞排行榜功能

用户点赞功能 如果用户只要点赞一次就对数据库中blog表中的liked字段的值加1就会导致一个用户无限点赞 PutMapping("/like/{id}") public Result likeBlog(PathVariable("id") Long id) {// 修改点赞数量,update tb_blog set liked liked 1 where id …

【前端】必学知识ES6 1小时学会

1.ES6概述 2.let和const的认识 3.let、const、var的区别 4.模板字符串 5.函数默认参数 6.箭头函数【重点】 ​编辑7.对象初始化简写以及案例分析 【重点】 8.对象解构 8.对象传播操作符 9.对象传播操作符案例分析 ​编辑 10.数组Map 11.数组Reduce 12.NodeJS小结 …

C++设计模式之工厂模式(下)——抽象工厂模式

抽象工厂模式 介绍示例示例使用运行结果抽象工厂模式的优缺点优点缺点 总结 介绍 抽象工厂模式是一种创建型设计模式,它提供了一种封装一组相关或相互依赖对象的方式,而无需指定它们具体的类。它允许客户端使用抽象接口来创建一系列相关的对象&#xff…

稻谷飘香金融助力——建行江门市分行助力乡村振兴

7月的台山,稻谷飘香。在大耕户李胜业的农田里,金灿灿的稻谷翻起层层稻浪,收割机在稻浪里来回穿梭,割稻、脱粒、装车等工序一气呵成。空气中弥漫着丰收的喜悦。 夏粮迎丰收的背后,是中国建设银行江门市分行&#xff08…

GCANet_Gated context aggregation network for image dehazing and deraining

2019、中科大港科、有代码 Chen D, He M, Fan Q, et al. Gated context aggregation network for image dehazing and deraining[C]//2019 IEEE winter conference on applications of computer vision (WACV). IEEE, 2019: 1375-1383. GitHub - cddlyf/GCANet: Implementation…

延时任务定时发布,基于 Redis 与 DB 实现

目录 1、什么是延时任务,分别可以使用哪些技术实现? 1.2 使用 Redis 和 DB 相结合的思路图以及分析 2、实现添加任务、删除任务、拉取任务 3、实现未来数据的定时更新 4、将数据库中的任务数据,同步到 Redis 中 1、什么是延时任务&#xff…

multiset和multimap(map和set的可重复版)

multiset和multimap multisetmultiset的使用 multimapmultimap的使用 这里有讲解map和set的详细使用: C中的map和set使用详解 multiset multiset的文档介绍 翻译: multiset是按照特定顺序存储元素的容器,其中元素是可以重复的。在multiset…

Vue学习笔记-Object.defineproperty函数

文章目录 前文提要Object.defineProperty作用Object.defineProperty参数使用例图getter,也就是get函数setter,也就是set函数 前文提要 本人仅做个人学习记录,如有错误,请多包涵 Object.defineProperty作用 当在js中声明了一个变…

深入理解JVM 类加载机制

深入理解JVM 类加载机制 虚拟机如何加载Class文件? Class文件中的信息进入到虚拟机后会发生什么变化? 类加载机制就是Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机…

成为独立开发者有多难

首先自我介绍:我是一名前端开发工程师,7年的前端开发经验。CSDN 九段刀客_js,vue,ReactNative-CSDN博客,80多万的访问量,1万多的粉丝。 相信80%的程序员的终极梦想都是成为一名独立开发者,不用找工作有自己的产品可以有睡后收入。…

函数与数组

一.函数 1、函数的作用 定义较为复杂的但是需要重复使用的内容,以便再次使用,可以直接调用,节约时间,提高效率。 语句块定义成函数约等于别名,定义函数,再引用函数。 封装的可重复利用的具有特定功能的…

【机器学习 | ARIMA】经典时间序列模型ARIMA定阶最佳实践,确定不来看看?

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

宣传技能培训1——《新闻摄影技巧》

新闻摄影技巧 写在最前面摘要 构图与拍摄角度景别人物表情与叙事远景与特写 构图与拍摄角度案例 主体、陪体、前景、背景强调主体利用前景和背景层次感的创造 探索新闻摄影中的构图技巧基本构图技巧构图技巧的应用实例实例分析1. 黄金分割和九宫格2. 三角型构图3. 引导线构图4.…

JSP过滤器和监听器

什么是过滤器 Servlet过滤器与Servlet十分相似,但它具有拦截客户端(浏览器)请求的功能,Servlet过滤器可以改变请求中的内容,来满足实际开发中的需要。 对于程序开发人员而言,过滤器实质就是在Web应用服务器…

Matrix

Matrix 如下是四种变换对应的控制参数: Rect 常用的一个“绘画相关的工具类”,常用来描述长方形/正方形,他只有4个属性: public int left; public int top; public int right; public int bottom; 这4个属性描述着这一个“方块…

IAR为恩智浦S32M2提供全面支持,提升电机控制能力

IAR Embedded Workbench for Arm已全面支持恩智浦最新的S32系列,可加速软件定义汽车的车身和舒适性应用的开发 瑞典乌普萨拉,2023年11月22日 – 嵌入式开发软件和服务的全球领导者IAR现已全面支持恩智浦半导体(NXP Semiconductors&#xff0…

数字化时代,数据资产交易困境的治理

数据作为五大生产要素之一,正与行业应用深度结合,成为推动产业、企业数字化转型升级的重要驱动力量。数据作为基础的战略性资源和新的生产要素,如果不能充分流通和交易,就丧失了价值和作用。因此,数据资产的交易关系着…