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

前言

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 pdurl = '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 pdurl = '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.rhkb.cn/news/202487.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 提高篇学习笔记(一):深拷贝和浅拷贝

文章目录 一、什么是对象的引用二、深拷贝和浅拷贝2.1 浅拷贝(Shallow Copy)2.2 深拷贝(Deep Copy)2.3 copy.copy和copy.deepcopy的区别 一、什么是对象的引用 在 Python 中,对象的引用是指变量指向内存中某个对象的地址或标识符。当你创建一个新的对象(比如一个整…

k8s无法删除pv,pvc问题

问题: 在k8s里面创建了pv,pvc删除时报错:error: resource(s) were provided, but no name was specified 解决: 正确的删除顺序:1.先删除pod2.再删除pv 3.在删除pvc 删除pv,pvc命令: kubect…

“下一代云”白皮书发布:PaaS成为核心增长动力,腾讯云市场份额第二

“市场需求进一步向PaaS和SaaS层进发,使之成为公有云服务市场增长的主要动力。”11月22日,全球领先的IT研究和咨询公司国际数据公司(IDC)联合腾讯云发布“下一代云”白皮书——《聚焦平台能力,支撑智能化业务发展》指出…

电大搜题——让学习变得轻松高效

作为一名现代学者,您一定时刻关注着教育领域的进展和创新。今天,我将向大家介绍一个名为“电大搜题”的神奇工具,它将为您的学习之路带来一场完美的革命。 在快节奏的现代社会中,学习已经成为每个人追求成功的必经之路。然而&…

微服务实战系列之加密RSA

前言 在这个时代,我们选择的人生目标已丰富多彩,秉持的人生态度也千差万别: 除了吃喝玩乐,还有科技探索; 除了CityWalk,还有“BookWalk”; 除了走遍中国,还有走遍世界; …

leetCode 2925. 在树上执行操作以后得到的最大分数 + 正则难反 + 树形 DP

2925. 在树上执行操作以后得到的最大分数 - 力扣(LeetCode) 有一棵 n 个节点的无向树,节点编号为 0 到 n - 1 ,根节点编号为 0 。给你一个长度为 n - 1 的二维整数数组 edges 表示这棵树,其中 edges[i] [ai, bi] 表示…

浅谈能源智能管理系统在大学高校中的应用

安科瑞 华楠 摘要:结合深圳南方科技大学能效系统工程设计实例,针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统,分析了系统中的水、电、气在高校中的能耗分布,并阐述了节能应用方案,可…

「纯电」厮杀,广州车展的年末大戏

作者 |张祥威 编辑 |德新 年末的广州车展,揭开纯电动车激烈厮杀的一角。 1100多款车型亮相在这届车展,其中新能源车有460多辆,占接近一半比例。这其中,人们的焦点又放在十多款纯电车型上。 造车新势力中,理想的首款…

基于Python+TensorFlow+Django的交通标志识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 随着交通网络的不断扩展和智能交通系统的发展,交通标志的自动识别变得愈发重要。本项目旨在利用Python编…

micro_ros

原文链接Supported Hardware | micro-ROS Supported Hardware The main targets of micro-ROS are mid-range 32-bits microcontroller families. Usually, the minimum requirements for running micro-ROS in an embedded platform are memory constraints. Since memory u…

阿里云ECS服务器如何搭建并连接FTP,完整步骤

怎么用终端连接服务器就不多说了,直接开始搭建FTP。 我是用root账号执行的命令,如果不使用root账号,注意在命令前面加sudo。 一、安装FTP 我这里安装的是vsftpd。 1、检查是否已安装vsftpd: vsftpd -v如果出现了版本信息&…

Atlassian Confluence 路径遍历和命令执行漏洞 (CVE-2019-3396)

漏洞描述 Confluence 是由澳大利亚软件公司 Atlassian 开发的基于 Web 的企业 wiki。 Atlassian Confluence 6.14.2 版本之前存在一个未经授权的目录遍历漏洞,攻击者可以使用 Velocity 模板注入读取任意文件或执行任意命令。 漏洞环境及漏洞利用 启动docker环境…

【git】pip install git+https://github.com/xxx/xxx替换成本地下载编译安装解决网络超时问题

目录 🌑🌑 背景 🌒 🌒作用 🌔🌔 问题 🌔🌔解决方案 🌙方法一 🌙方法二 🌝🌝我的解决方案 整理不易,欢迎一键三连…

【硬核HeyGen平替】在window平台上使用MyHeyGen

最近在研究HeyGen的平替开源项目,然后发现了MyHeyGen这个项目,但是文档上面并没有说明如果在window平台上使用,考虑到非window平台安装显卡驱动什么的比较繁琐,所以尝试硬着头皮干... 前提 开源项目中所需的环境准备要先准备好 1…

轻松记录收支明细,一键打印,财务无忧!

作为现代人,管理好个人财务是非常重要的。但是,如何记录收支明细并打印出来呢?今天,我们向您推荐一款财务软件,帮助您轻松解决这个问题。 首先第一步,我们要打开【晨曦记账本】,并登录账号。 第…

神经网络训练技巧

1. 逐渐增加训练数据规模,比如先在小数据集上训练,之后再增大数据集继续训练。

安卓隐私指示器学习笔记

最近了解到Google 在Android12上新增了权限指示器,可以在信号栏的右侧显示当前访问录音机和Camera的应用,点击后可以跳转到相应应用的权限界面,消费者可以控制权限的开启和关闭。国内手机厂商最近几年都在增加隐私看板供能,消费者…

电脑出现api-ms-win-crt-runtime-l1-1-0.dll丢失的情况有什么解决办法,dll文件丢失的方法

在使用电脑过程中,有时可能会遇到缺失api-ms-win-crt-runtime-l1-1-0.dll文件的问题,这可能导致某些应用程序无法正常运行。本文将介绍三种解决这个问题的方法,并比较它们的优缺点。 一.解决api-ms-win-crt-runtime-l1-1-0.dll丢失的问题 方…

Excel文件比较不再繁琐,xlCompare助您快速找出差异

概要 在现代职场中,Excel 已成为工作中不可或缺的利器。 在日常操作中,我们会遇到需要对两个或多个 Excel 文件进行比较的情况,此时,一款高效的 Excel 文件比较工具就显得尤为重要。 本文将为您介绍一款功能强大、优势明显的 Exc…

基于docker实现JMeter分布式压测

为什么需要分布式? 在工作中经常需要对一些关键接口做高QPS的压测,JMeter是由Java 语言开发,没创建一个线程(虚拟用户),JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并…