搜尋
首頁後端開發Python教學使用 Excel 和 Python 從互聯網獲取數據

今天的文章主要分為兩個部分,一是用透過Python建立一個資料網站,二是分別使用Excel和Python從編寫的Web網站上取得資料。

一、建置測試用網站資料

透過Python Flask Web框架分別建構一個Web網站和一個Web API服務。

1.建立Web網站

新建一個名為「5-5-WebTable.py」的Python腳本,建立一個包含表格的簡單網頁。如果讀者對建置方法不感興趣,可跳過以下程式碼,直接執行腳本「5-5-WebTable.py」開啟網站。

(1)安裝flask套件。

pip install flask

(2)建立包含表格的網頁。

from flask import Flask

app = Flask(__name__)# 创建Falsk Web应用实例

# 将路由“/”映射到table_info函数,函数返回HTML代码
@app.route('/')
def table_info():

return """<h2 id="HTML表格实例-用于提供给Excel和Python读取">HTML表格实例,用于提供给Excel和Python读取</h2>
<table border="1">
<caption>用户信息表</caption>
<tbody><tr>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
<tr>
<td>小米</td>
<td>女</td>
<td>22</td>
</tr>
……….
</tbody></table>"""

if __name__ == '__main__':
app.debug = True# 启用调试模式
app.run()# 运行,网站端口默认为5000

透過指令「python ./5-5-WebTable.py」啟動網站,然後在瀏覽器中輸入http://127.0.0.1:5000/,出現如圖1所示的網頁內容。

使用 Excel 和 Python 從互聯網獲取數據

圖1  使用Flask建置的測試網站

#2.建構Web API服務

新建一個名為「5-5- WebAPI.py」的Python腳本,使用flask_restplus套件建構Web API服務。如果讀者對建置方法不感興趣,可跳過以下程式碼,直接執行腳本「5-5-WebAPI.py」開啟Web API服務。

(1)安裝flask_restplus套件。

pip install flask-restplus

(2)導入必要的函式庫與初始化應用程式物件。

from flask import Flask
# Api类是Web API应用的入口,需要用Flask应用程序初始化
from flask_restplus import Api

# Resource类是HTTP请求的资源的基类
from flask_restplus import Resource

# fields类用于定义数据的类型和格式
from flask_restplus import fields

app = Flask(__name__)# 创建Falsk Web应用实例

# 在flask应用的基础上构建flask_restplusApi对象
api = Api(app, version='1.0',
title='Excel集成Python数据分析-测试用WebAPI',
description='测试用WebAPI', )

# 使用namespace函数生成命名空间,用于为资源分组
ns = api.namespace('ExcelPythonTest', description='Excel与Python Web API测试')
# 使用api.model函数生成模型对象
todo = api.model('task_model', {
'id': fields.Integer(readonly=True,
 description='ETL任务唯一标识'),
'task': fields.String(required=True,
description='ETL任务详情')
})

(3)Web API資料操作類,包含增、刪、改、查等方法。

class TodoDAO(object):

def __init__(self):
self.counter = 0
self.todos = []

def get(self, id):
for todo in self.todos:
if todo['id'] == id:
return todo
api.abort(404, "ETL任务 {} 不存在".format(id))

def create(self, data):
todo = data
todo['id'] = self.counter = self.counter + 1
self.todos.append(todo)
return todo

# 实例化数据操作,创建3条测试数据
DAO = TodoDAO()
DAO.create({'task': 'ETL-抽取数据操作'})
DAO.create({'task': 'ETL-数据清洗转换'})
DAO.create({'task': 'ETL-数据加载操作'})

(4)建構Web API的路由對映。

HTTP資源請求類別從Resource類別繼承,然後對應到不同的路由,同時指定可使用HTTP方法。

@ns.route('/')# 路由“/”对应的资源类为TodoList,可使用get方法和post方法进行请求
class TodoList(Resource):
@ns.doc('list_todos')# @doc装饰器对应API文档的信息
@ns.marshal_list_with(todo)# @marshal_xxx装饰器对模型数据进行格式转换与输出
def get(self):# 定义get方法获取所有的任务信息
return DAO.todos

@ns.doc('create_todo')
@ns.expect(todo)
@ns.marshal_with(todo, code=201)
def post(self):# 定义post方法获取所有的任务信息
return DAO.create(api.payload), 201

# 路由/<int:id>对应的资源类为Todo,可使用get、delete、put方法进行请求
@ns.route('/<int:id>')
@ns.response(404, '未发现相关ETL任务')
@ns.param('id', 'ETL任务ID号')
class Todo(Resource):
@ns.doc('get_todo')
@ns.marshal_with(todo)
def get(self, id):
return DAO.get(id)

@ns.doc('delete_todo')
@ns.response(204, 'ETL任务已经删除')
def delete(self, id):
DAO.delete(id)
return '', 204

@ns.expect(todo)
@ns.marshal_with(todo)
def put(self, id):
return DAO.update(id, api.payload)

if __name__ == '__main__':
app.run(debug=True, port=8000)# 启动Web API服务,端口为8000

(4)開啟Web API服務。

透過指令「python ./5-5-WebAPI.py」啟動Web API服務,在瀏覽器中輸入「http://127.0.0.1:8000/」將出現如圖5-23所示的Web API服務請求方法清單。

使用 Excel 和 Python 從互聯網獲取數據

圖2  WebAPI服務要求方法清單

#2、抓取用網頁資料

Excel可以透過「資料」標籤下的「自網站」功能抓取網頁資料。 Python可以使用 requests 函式庫、Beautiful Soup套件、Scrapy框架抓取網頁資料。

1.透過Excel抓取

點選「資料」→「自其他來源」→「自網站」功能。 Excel可讀取的網頁資料有限制:動態網頁資料無法自動識別,非表格資料無法自動辨識。

(1)點選「資料」→「自其他來源」→「自網站」功能。

(2)確保在5.5.1節中編寫的Web網站已經開啟。

(3)輸入網站URL位址「http://127.0.0.1:5000/」

按一下「進階」按鈕可設定更詳細的HTTP請求訊息,然後按一下「確定”按鈕,如圖3所示。

使用 Excel 和 Python 從互聯網獲取數據

圖3  設定要讀取網站的URL

(4)在「導航器」視窗中選擇匯入資料。

如圖4所示,Excel自動辨識網頁中的表格數據,選擇表名後點選「載入」按鈕即可。

使用 Excel 和 Python 從互聯網獲取數據

圖4  Excel自動辨識網頁中的表格資料

2.使用Python抓取

下列示範使用requests庫抓取整個網頁中的數據,然後使用Beautiful Soup解析網頁。讀者可參考本書程式碼素材檔案「5-5-web.ipynb」進行學習。

(1)透過requests讀取網頁資料。

import requests #导入requests包
url ='http://127.0.0.1:5000/'

strhtml= requests.get(url) #使用get方法请求网页数据

(2)透過Beautiful Soup解析網頁。

from bs4 import BeautifulSoup

soup = BeautifulSoup(strhtml.text)# 将网页内容作为参数,创建soup对象
table = soup.find('table')# 查找网页中的table元素
table_body = table.find('tbody')# 查找table元素中的tbody元素
data = []
rows = table_body.find_all('tr')# 查找表中的所有tr元素

for row in rows:# 遍历数据
cols = row.find_all('td')
cols = [ele.text.strip() for ele in cols]
data.append([ele for ele in cols if ele])
# 结果输出:[[],
['小米', '女', '22'],['小明','男','23'],……

3、呼叫Web API服務

Excel可以透過「資料」標籤下的「自網站」功能呼叫Web API服務。 Python可以使用 requests 函式庫、Beautiful Soup套件、Scrapy框架呼叫Web API來取得資料。

1.使用Excel呼叫

(1)確保5.5.1節中所寫的Web API服務已經開啟。

(2)輸入Web API方法對應的URL:http://127.0.0.1:8000/ExcelPythonTest/。

(3)處理傳回的資料。

呼叫Web API服務後資料以JSON格式傳回,依照5.4.3小節介紹的方法處理JSON資料。

2.使用Python呼叫

使用requests函式庫呼叫Web API方法,然後對傳回的JSON資料進行處理,讀者可參考本書程式碼素材檔「5-5-api.ipynb ”進行學習。

import requests#导入requests包
url ='http://127.0.0.1:8000/ExcelPythonTest/'

strhtml= requests.get(url)#使用get方法获取网页数据

import pandas as pd

frame= pd.read_json(strhtml.text)#使用Pandas包中的read_json函数
print(frame)
#结果输出:
id task
0 1 ETL-抽取数据操作
1 2 ETL-数据清洗转换
2 3 ETL-数据加载操作

4、两种方法对比

表1所示为Excel和Python抓取互联网数据方法的对比。需要注意Excel从互联网抓取数据的功能并不完善。

表1   Excel和Python抓取互联网数据方法对比

使用 Excel 和 Python 從互聯網獲取數據

以上是使用 Excel 和 Python 從互聯網獲取數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
Python vs. C:了解關鍵差異Python vs. C:了解關鍵差異Apr 21, 2025 am 12:18 AM

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

Python vs.C:您的項目選擇哪種語言?Python vs.C:您的項目選擇哪種語言?Apr 21, 2025 am 12:17 AM

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

達到python目標:每天2小時的力量達到python目標:每天2小時的力量Apr 20, 2025 am 12:21 AM

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。

最大化2小時:有效的Python學習策略最大化2小時:有效的Python學習策略Apr 20, 2025 am 12:20 AM

在兩小時內高效學習Python的方法包括:1.回顧基礎知識,確保熟悉Python的安裝和基本語法;2.理解Python的核心概念,如變量、列表、函數等;3.通過使用示例掌握基本和高級用法;4.學習常見錯誤與調試技巧;5.應用性能優化與最佳實踐,如使用列表推導式和遵循PEP8風格指南。

在Python和C之間進行選擇:適合您的語言在Python和C之間進行選擇:適合您的語言Apr 20, 2025 am 12:20 AM

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

Python與C:編程語言的比較分析Python與C:編程語言的比較分析Apr 20, 2025 am 12:14 AM

Python更適合數據科學和快速開發,C 更適合高性能和系統編程。 1.Python語法簡潔,易於學習,適用於數據處理和科學計算。 2.C 語法複雜,但性能優越,常用於遊戲開發和系統編程。

每天2小時:Python學習的潛力每天2小時:Python學習的潛力Apr 20, 2025 am 12:14 AM

每天投入兩小時學習Python是可行的。 1.學習新知識:用一小時學習新概念,如列表和字典。 2.實踐和練習:用一小時進行編程練習,如編寫小程序。通過合理規劃和堅持不懈,你可以在短時間內掌握Python的核心概念。

Python與C:學習曲線和易用性Python與C:學習曲線和易用性Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)