如何用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.pswp.cn/news/164272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于禪道的安裝配置以及項目管理、團隊協同工作

目錄 一、禪道是什么? 二、特點和功能 三、安裝禪道 3.1 下載官網 3.2 版本考慮 3.3 禪道使用手冊參考 3.4 Windows端安裝禪道 四、啟動禪道 4.1 訪問禪道 四、禪道部分功能的使用 4.1 添加項目集 4.2 啟動/關閉項目 4.3 項目計劃儀表盤/階段目標/研發…

頭歌——操作系統實訓總結

死鎖 1、系統出現死鎖時一定同時保持了四個必要條件,對資源采用按序分配算法后可破壞的條件是(A)。 A、循環等待條件B、互斥條件C、占有并等待條件D、不可搶占條件 2、資源的靜態分配算法在解決死鎖問題中是用于(B)。 …

【圖論】關鍵路徑求法c++

代碼結構如下圖: 其中topologicalSort(float**, int, int*, bool*, int, int)用來遞歸求解拓撲排序,topologicalSort(float**, int*&, int, int, int)傳參圖的鄰接矩陣mat與結點個數n,與一個引用變量數組topo,返回一個布爾值…

代碼隨想錄-刷題第五天

鏈表題目總結 鏈表基本操作 對鏈表進行增刪改查等基本操作。注意,很多鏈表的題目使用虛擬頭結點操作起來會更加方便。每次對應頭結點的情況都要單獨處理,所以使用虛擬頭結點的技巧,就可以解決這個問題。 反轉鏈表 可以使用頭插法&#xf…

Shopee本土號封號幾率大嗎?如何避免封號?被封號了怎么辦?

Shopee是近幾年熱門的電商平臺之一,即使越來越多的跨境電商涌現,他的地位在東南亞市場依然占據一席之地,也依舊吸引著需要跨境商家入局。尤其在2023年,在TikTok Shop在印尼被關停之后,留下了大片空白,Shope…

CF 1890A Doremy‘s Paint 3 學習筆記 map的使用

原題 A. Doremys Paint 3 time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output An array 𝑏1,𝑏2,…,𝑏𝑛�1,�2,…,�&a…

跨境電商必須要海外代理IP嗎?盤點五大海外代理IP

相信跨境電商人近日都為了2023的跨境黑五旺季奮戰,而2024也即將來臨,對于跨境人的考驗一波接著一波,根據Adobe Analytics的數據,2022年黑色星期五的銷售額創下91.2億美元新高,網絡星期的銷售額同樣達到創紀錄的113億美…

『 C++類與對象 』多態之單繼承與多繼承的虛函數表

文章目錄 🫧 前言🫧 查看虛表🫧 單繼承下的虛函數表🫧 多繼承下的虛函數表 🫧 前言 多態是一種基于繼承關系的語法,既然涉及到繼承,而繼承的方式有多種: 單繼承多繼承棱形繼承棱形虛擬繼承 不同的繼承方式其虛表的形…

ToDesk提示通道限制 - 解決方案

問題 使用ToDesk進行遠程控制時,免費個人賬號最多支持1個設備同時發起遠控,若使用此賬號同時在2個設備發起遠控,則會提示通道限制,如下圖: 解決方案 方案1:斷開其它遠控 出現通道限制彈窗時&#xff0…

數據結構(超詳細講解!!)第二十四節 二叉樹(下)

1.遍歷二叉樹 在二叉樹的一些應用中,常常要求在樹中查找具有某種特征的結點,或者對樹中全部結點逐一進行某種處理。這就引入了遍歷二叉樹的問題,即如何按某條搜索路徑訪問樹中的每一個結點,使得每一個結點僅且僅被訪問一次。 …

python3實現tailf命令

由于windows上面沒有類似linux上面的tailf命令,所以下面的python腳本來代替其能力。 tailf.py import re import timeimport os import argparsedef follow(thefile):thefile.seek(0, os.SEEK_END)while True:_line thefile.readline()if not _line:time.sleep(0…

RabbitMQ 搭建和工作模式

MQ基本概念 1. MQ概述 MQ全稱 Message Queue([kju?])(消息隊列),是在消息的傳輸過程中保存消息的容器。多用于分布式系統之間進行通信。 (隊列是一種容器,用于存放數據的都是容器&#xff0…

docker部署微服務

目錄 docker操作命令 鏡像操作命令 拉取鏡像 導出鏡像 刪除鏡像 加載鏡像 推送鏡像 部署 pom文件加上 在每個模塊根目錄加上DockerFile文件 項目根目錄加上docker-compose.yml文件 打包,clean,package 服務器上新建文件夾 測試docker-compo…

基于springboot和微信小程序的流浪動物管理系統

基于springboot和微信小程序的流浪動物管理系統 內容簡介 基于微信小程序實現的流浪動物管理系統,該系統針對用戶與管理員兩種角色進行開發。 1、提供流浪動物的信息查詢功能,包括品種、年齡、性別、健康狀況等,提供救助活動報名功能。 2…

5.1 PBR基礎 BRDF介紹

基于物理的渲染(Physically Based Rendering,PBR)是指使用基于物理原理和微平面理論建模的著色/光照模型,以及使用從現實中測量的表面參數來準確表示真實世界材質的渲染理念。 一、反射率方程 理論基礎放在參考鏈接里。 直接開始…

【uniapp】uniapp開發小程序定制uni-collapse(折疊面板)

需求 最近在做小程序,有一個類似折疊面板的ui控件,效果大概是這樣 代碼 因為項目使用的是uniapp,所以打算去找uniapp的擴展組件,果然給我找到了這個叫uni-collapse的組件(鏈接:uni-collapse&#xff09…

超詳細的接口測試

本文主要分為兩個部分: 第一部分:主要從問題出發,引入接口測試的相關內容并與前端測試進行簡單對比,總結兩者之前的區別與聯系。但該部分只交代了怎么做和如何做?并沒有解釋為什么要做? 第二部分&#xf…

ShellCode漏洞

ShellCode漏洞 可以查看如下網址: https://www.cnblogs.com/kakadewo/p/12996878.html 定義: shellcode是一段用于利用軟件漏洞而執行的代碼,shellcode為16進制之機械碼,以其經常讓攻擊者獲得shell而得名。shellcode常常使用機…

老鳥總結,軟件測試工程師職業發展規劃路線,入門到沖擊大廠...

目錄:導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結(尾部小驚喜) 前言 1、測試工程師發展…

YOCTO 下載repo工具失敗解決辦法

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repocp repo ~/binchmod ax ~/bin/repo如果使用時報錯, 切換ubuntu 到 python3 版本。gedit repo 修改repo默認鏈接地址:REPO_URL "https://gerrit.googlesource.com/git-repo"…