中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2023-04-12 09:39:33 來源:億速云 閱讀:108 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么使用Excel和Python從互聯網獲取數據”,在日常操作中,相信很多人在怎么使用Excel和Python從互聯網獲取數據問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Excel和Python從互聯網獲取數據”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、構建測試用網站數據

通過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 """HTML表格實例,用于提供給Excel和Python讀取用戶信息表姓名性別年齡小米女22………."""

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

# 路由/對應的資源類為Todo,可使用get、delete、put方法進行請求
@ns.route('/')
@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從互聯網獲取數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九江市| 遂平县| 棋牌| 宜良县| 鲜城| 湖北省| 灵武市| 洱源县| 临邑县| 石河子市| 六安市| 札达县| 大田县| 白朗县| 铜陵市| 巴南区| 永善县| 井陉县| 茶陵县| 凭祥市| 武宣县| 江门市| 西昌市| 宝鸡市| 兴仁县| 纳雍县| 苍山县| 安义县| 永和县| 刚察县| 大足县| 定南县| 和林格尔县| 九龙县| 通城县| 庄河市| 阿拉尔市| 东莞市| 临城县| 乐业县| 衢州市|