오늘의 글은 크게 두 부분으로 나누어집니다. 하나는 Python을 통해 데이터 웹사이트를 구축하는 것이고, 다른 하나는 Excel과 Python을 사용하여 작성된 웹사이트에서 데이터를 얻는 것입니다.
Python Flask 웹 프레임워크를 통해 웹사이트와 웹 API 서비스를 구축합니다.
"5-5-WebTable.py"라는 새 Python 스크립트를 만들어 테이블이 포함된 간단한 웹 페이지를 만듭니다. 독자가 구성 방법에 관심이 없다면 다음 코드를 건너 뛰고 "5-5-WebTable.py"스크립트를 직접 실행하여 웹 사이트를 열 수 있습니다.
(1) 플라스크 패키지를 설치합니다.
pip install flask
(2) 테이블이 포함된 웹페이지를 구축합니다.
from flask import Flask app = Flask(__name__)# 创建Falsk Web应用实例 # 将路由“/”映射到table_info函数,函数返回HTML代码 @app.route('/') def table_info(): return """<h2>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에 표시된 웹 페이지 내용이 나타납니다.
그림 1 Flask를 사용하여 구축된 테스트 웹사이트
"5-5-WebAPI.py"라는 새 Python 스크립트를 생성하고 플라스크_restplus 패키지를 사용하여 웹 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) 추가, 삭제, 수정, 쿼리 등의 메서드를 포함하는 웹 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) 웹 API 서비스를 시작합니다.
"python ./5-5-WebAPI.py" 명령을 통해 Web API 서비스를 시작하고 브라우저에 "http://127.0.0.1:8000/"을 입력하면 그림 5-23에 표시된 Web API가 실행됩니다. 서비스 요청 방법 목록이 나타납니다.
그림 2 WebAPI 서비스 요청 방법 목록
Excel은 "데이터" 탭의 "웹 사이트에서" 기능을 통해 웹 페이지 데이터를 캡처할 수 있습니다. Python은 요청 라이브러리, Beautiful Soup 패키지 및 Scrapy 프레임워크를 사용하여 웹 페이지 데이터를 크롤링할 수 있습니다.
"데이터" → "다른 소스에서" → "웹사이트에서" 기능을 클릭하세요. Excel이 읽을 수 있는 웹 페이지 데이터에는 제한이 있습니다. 동적 웹 페이지 데이터는 자동으로 인식할 수 없으며 테이블이 아닌 데이터는 자동으로 인식할 수 없습니다.
(1) "데이터" → "다른 소스에서" → "웹사이트에서" 기능을 클릭합니다.
(2) 5.5.1항에서 작성한 웹사이트가 시작되었는지 확인하세요.
(3) 웹 사이트 URL 주소 "http://127.0.0.1:5000/"을 입력합니다.
"고급" 버튼을 클릭하여 보다 자세한 HTTP 요청 정보를 구성한 후 그림과 같이 "확인" 버튼을 클릭합니다. 그림 3 쇼.
그림 3 읽을 웹사이트의 URL 구성
(4) "네비게이터" 창에서 데이터 가져오기를 선택합니다.
그림 4와 같이 Excel은 웹 페이지의 테이블 데이터를 자동으로 인식하고 테이블 이름을 선택한 후 "로드" 버튼을 클릭합니다.
그림 4 Excel은 자동으로 웹 페이지의 표 형식 데이터를 인식합니다
다음은 요청 라이브러리를 사용하여 전체 웹 페이지의 데이터를 캡처한 다음 Beautiful Soup을 사용하여 웹 페이지를 구문 분석하는 방법을 보여줍니다. . 독자들은 이 책에 있는 코드 자료 파일 "5-5-web.ipynb"를 참고하여 학습할 수 있습니다.
(1) 요청을 통해 웹페이지 데이터를 읽습니다.
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'],……
Excel은 "데이터" 탭의 "셀프 웹사이트" 기능을 통해 웹 API 서비스를 호출할 수 있습니다. Python은 요청 라이브러리, Beautiful Soup 패키지 및 Scrapy 프레임워크를 사용하여 Web API를 호출하여 데이터를 얻을 수 있습니다.
(1) 5.5.1항에서 작성한 Web API 서비스가 시작되었는지 확인합니다.
(2) Web API 메소드에 해당하는 URL을 입력하세요: http://127.0.0.1:8000/ExcelPythonTest/.
(3) 반환된 데이터를 처리합니다.
웹 API 서비스를 호출하면 데이터가 JSON 형식으로 반환됩니다. 섹션 5.4.3에 소개된 방법에 따라 JSON 데이터를 처리하세요.
요청 라이브러리를 사용하여 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-数据加载操作
表1所示为Excel和Python抓取互联网数据方法的对比。需要注意Excel从互联网抓取数据的功能并不完善。
表1 Excel和Python抓取互联网数据方法对比
위 내용은 Excel과 Python을 사용하여 인터넷에서 데이터 가져오기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!