🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

566閲覧

Python のスクレイピングコードをウェブに実装したいです

S.H16

総合スコア5

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2023/11/09 15:06

Pythonのコードをweb上で実装したいです。
理系大学2年生、Pythonを一ヶ月勉強しています。
Seleniumを使ってスクレイピングをするコードをVScode で作成しました。具体的にはAmazonや楽天市場の商品情報を取得するものです。(写真参照)
今はコードに商品名を直接入力しているのですが、webページから検索バーで商品検索し、情報を一覧化するにはどうすれば良いでしょうか?
とりあえずFlaskを勉強し始めたところです。よろしくお願いします!!
画像が荒くて文字が見えないかもしれないので下に書きます。

出力結果
商品名 価格 送料 ポイント URL
【Amazon】 Anker… ¥4,999 通常配送料無料 50ポイント https…
【楽天】 Anker… ¥4,999 送料無料 …
【PayPayフリマ】 …

のような感じです!
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

webページから検索バーで商品検索し、情報を一覧化するにはどうすれば良いでしょうか?

そういう機能を持つものがまさにWebアプリケーションです。
なので、ここでちょっと説明するという規模ではありませんので、 Flaskの勉強をするのがいいでしょう。

勉強にあたっては、Webではなく、体系的に学べる書籍を使うのをお勧めします。
Amazonあたりで、「Flask入門」などと検索して出てくるものを選びましょう。
注意点としては、使っているOSに合っているものを選ぶことです。 WindowsとMacでは導入部分がかなり異なります。 python開発環境については問題ないということであれば、無視してもOKです。

投稿2023/11/09 15:14

TakaiY

総合スコア13742

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

S.H16

2023/11/09 15:23

丁寧で迅速な回答ありがとうございます!Flaskの知識が必要なのですね。Kindle Unlimitedで数冊軽く読みましたが、方向性が合ってるのか確認しておきたかったため質問させて頂きました。Flaskとdjangoではこの規模のアプリならFlaskの方が良いでしょうか?
TakaiY

2023/11/09 15:35

多くのWebアプリケーションはバックエンド側にDBが存在します。 フロントエンドについてもそれを前提としたデータ連携などの機能が必要になります。Djangoはそういう複雑なWebアプリに必要な機能を多く持っています。 ということは、多くの作法があったりするということです。 Flaskは軽量フレームワークという名前の通り、バックエンドでHTTPのリクエスト・レスポンスを管理するところを中心にした機能+αくらいの構成であり、簡単に使いはじめて構築することができますが、複雑なことをしたければ自分でなんとかしなければなりません。。 今後、そのアプリでDBを扱ったりいろいろな機能を付けたりする予定がなく、比較的早く動かしたいのであれば、Flaskでやるのがいいと思います。 Pythonで本格的にWebアプリをつくれるようになるのが目的なのであれば、Djangoを使ってみるのもありでしょう。 ちなみに、大規模なWebアプリをFlaskでつくることはできないかというとそんなことはありません。ただ、自由度が高くなるので、考えて作らないとごちゃごちゃしたものになりやすくなります。
S.H16

2023/11/09 23:37

違いを詳しく理解できました。今回はFlaskにしようと思います!本当にありがとうございました。
guest

0

既に解決済みですが、Python では wsgiref — WSGI Utilities and Reference Implementation が提供されています。こちらを利用するのも良いかと思います。

python

1import pandas as pd 2import requests 3import wsgiref.simple_server 4from urllib.parse import parse_qs, urljoin 5from bs4 import BeautifulSoup 6 7template = ''' 8<!DOCTYPE html> 9<html lang="ja"> 10<head> 11 <meta charset="UTF-8"> 12 <title>検索</title> 13</head> 14<body> 15<form action="/" method="post"> 16 <div> 17 <label for="query">検索ワード</label> 18 <input type="text" name="query" id="query" value="{search_word}"> 19 <button type="submit">検索</button> 20 </div> 21</form> 22 23{result_table} 24 25</body> 26</html> 27''' 28 29def query(search_word): 30 query_url = 'https://www.amazon.co.jp/s/ref=nb_sb_noss_1' 31 headers = {'Referer': 'https://www.amazon.co.jp/', 'User-Agent': 'Mozilla/5.0'} 32 params = {'k': search_word, '__mk_ja_JP': 'カタカナ'} 33 res = requests.get(query_url, headers=headers, params=params) 34 # print(res.request.url) 35 soup = BeautifulSoup(res.text, 'html.parser') 36 df = pd.DataFrame(columns=['商品名', '価格', '送料', 'ポイント', 'URL']) 37 38 items = soup.select('div[data-asin]:not([data-asin=""])') 39 for item in items: 40 price = item.select_one('span.a-price-whole') 41 price = '' if price is None else price.text 42 shipping_charge = item.select_one('span:-soup-contains(送料)') 43 shipping_charge = '' if shipping_charge is None else shipping_charge.text 44 point = item.select_one('span:-soup-contains(ポイント)') 45 point = '' if point is None else point.text 46 url = f'<a href="{urljoin(query_url, item.select("a[href]")[-1]["href"])}">Link</a>' 47 df.loc[len(df)] = [item.select_one('h2').text, price, shipping_charge, point, url] 48 49 df.index += 1 50 return df.to_html(escape=False) 51 52def application(env, start_response): 53 path, method = env['PATH_INFO'], env['REQUEST_METHOD'] 54 if path == '/': 55 if method == 'POST': 56 wsgi_input = env['wsgi.input'] 57 length = int(env['CONTENT_LENGTH']) 58 form = wsgi_input.read(length).decode() 59 data = parse_qs(form, keep_blank_values=True) 60 search_word = data['query'][0] 61 table = f'<hr>{query(search_word)}' 62 response = template.format(search_word=search_word, result_table=table).encode('utf-8') 63 status = '200 OK' 64 else: 65 response = template.format(search_word='', result_table='').encode('utf-8') 66 status = '200 OK' 67 else: 68 # 404 not found 69 response = b'<h1>Not found</h1>' 70 status = '404 Not Found' 71 72 # response headers 73 headers = [ 74 ('Content-Type', 'text/html'), 75 ('Content-Length', str(len(response))) 76 ] 77 78 start_response(status, headers) 79 return [response] 80 81if __name__ == '__main__': 82 w_s = wsgiref.simple_server.make_server( 83 host='localhost', port=8000, app=application) 84 w_s.serve_forever()

イメージ説明

投稿2023/11/10 02:28

編集2023/11/10 07:20
melian

総合スコア20592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

S.H16

2023/11/10 04:44

わざわざコードまでありがとうございます!WSGIは初めて聞いた単語で、調べたところDjangoやFlask、Bottle、Pyramid などの有名なPythonのWebフレームワークはどれもWSGIの仕様に準拠しているんですね。 自分はまだ初心者なので、Flaskの方が良いでしょうか? また、こちらのPythonコードはどれくらいの時間で出来たのでしょうか?
melian

2023/11/10 05:01

はい、wsgiref は名前の通りにリファレンス実装なので、機能の豊富な Flask の方がよいかと思います。回答のコードは、以前に同じ様なプログラムを作成したことがありましたので、30分程度で出来ました。
S.H16

2023/11/10 08:06

了解です!Flaskにします。 そうなんですね。自分ならもっとかかりそうなので地道に学びます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問