検索
ホームページバックエンド開発Python チュートリアルExcel と Python を使用してインターネットからデータを取得する

今日の記事は主に 2 つの部分に分かれており、1 つは Python を使用してデータ Web サイトを構築するもので、もう 1 つは Excel と Python を使用して作成された Web サイトからデータを取得するものです。

1. テスト Web サイト データの構築

Python Flask Web フレームワークを介して Web Web サイトと Web API サービスを構築します。

1. Web Web サイトを構築する

「5-5-WebTable.py」という名前の新しい Python スクリプトを作成し、テーブルを含む単純な Web ページを作成します。構築方法に興味がない場合は、次のコードをスキップして、スクリプト「5-5-WebTable.py」を直接実行して Web サイトを開いてください。

(1) flask パッケージをインストールします。

pip install flask

(2) テーブルを含む Web ページを構築します。

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」を使用して Web サイトを起動し、ブラウザに http://127.0.0.1:5000/ と入力すると、図に示す Web ページのコンテンツが表示されます。 1が表示されます。

Excel と Python を使用してインターネットからデータを取得する

図 1 Flask を使用して構築されたテスト Web サイト

2. Web API サービスを構築する

「5-5」という名前の新しい Web サイトを作成します。 - WebAPI.py」 flask_restplus パッケージを使用して Web API サービスを構築する Python スクリプト。構築方法に興味がない場合は、次のコードをスキップして、スクリプト「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. Web ページ データのキャプチャ

Excel には「データ」からアクセスできます。タブ 「Web サイトから」機能は、Web ページのデータをキャプチャします。 Python は、リクエスト ライブラリ、Beautiful Soup パッケージ、および Scrapy フレームワークを使用して Web ページ データをクロールできます。

1. Excel によるキャプチャ

「データ」→「他のソースから」→「Web サイトから」機能をクリックします。 Excel が読み取ることができる Web ページ データには制限があります。動的 Web ページ データは自動認識できず、テーブル以外のデータは自動認識できません。

(1) 「データ」→「他のソースから」→「Web サイトから」機能をクリックします。

(2) 5.5.1項のWebサイトが開いていることを確認してください。

(3) Web サイトの URL アドレス「http://127.0.0.1:5000/」を入力します。

「詳細設定」ボタンをクリックして、さらに詳細な HTTP リクエスト情報を設定し、「」をクリックします。図 3 に示すように、「OK」ボタンをクリックします。

Excel と Python を使用してインターネットからデータを取得する

図3 読み込むWebサイトのURLの設定

(4) 「ナビゲータ」画面でデータのインポートを選択します。

図 4 に示すように、Excel は Web ページ内のテーブル データを自動的に認識し、テーブル名を選択して [読み込み] ボタンをクリックします。

Excel と Python を使用してインターネットからデータを取得する

図 4 Excel は Web ページ内のテーブル データを自動的に認識します

2. Python を使用してキャプチャします

次は、リクエスト ライブラリの使用方法を示します。次に、Web ページ全体のデータを使用して、Beautiful Soup を使用して Web ページを解析します。本書のコード資料ファイル「5-5-web.ipynb」を参照して学習してください。

(1) リクエストを通じて Web ページ データを読み取ります。

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

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

(2) Beautiful Soup を通じて Web ページを解析します。

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 サイト] 機能を通じて Web API サービスを呼び出すことができます。 Python は、リクエスト ライブラリ、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 形式で返され、JSON データはセクション 5.4.3 で紹介した方法に従って処理されます。

2. Python を使用して

リクエスト ライブラリを使用して 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 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Apr 25, 2025 am 12:28 AM

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

同じシステムで異なるPythonバージョンをどのように処理しますか?同じシステムで異なるPythonバージョンをどのように処理しますか?Apr 25, 2025 am 12:24 AM

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?Apr 25, 2025 am 12:21 AM

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

アレイの均質な性質はパフォーマンスにどのように影響しますか?アレイの均質な性質はパフォーマンスにどのように影響しますか?Apr 25, 2025 am 12:13 AM

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?Apr 25, 2025 am 12:11 AM

craftexecutablepythonscripts、次のようになります

numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?Apr 24, 2025 pm 03:53 PM

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Apr 24, 2025 pm 03:49 PM

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

CTypesモジュールは、Pythonの配列にどのように関連していますか?CTypesモジュールは、Pythonの配列にどのように関連していますか?Apr 24, 2025 pm 03:45 PM

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません