質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

JavaScript

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

Python

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

HTML

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

Q&A

1回答

1332閲覧

Brython に詳しい方 スクレイピングについてお教えいただきたいです。

n_pome

総合スコア2

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

JavaScript

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

Python

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

HTML

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

0グッド

1クリップ

投稿2020/09/09 02:59

編集2020/09/09 04:50

プログラミング初心者です。
(うまく質問内容が欠けているか自信がありませんので、
もし意味の分からない部分があればお申し付けください。)

pythonでスクレイピングを行うプログラムを作成し、
WEBページから得たテキスト情報をブラウザ上で表示させるようなアプリケーションを
作りたくてプログラミングをしております。

brythonをつかって、pythonでの実行結果をJavaScriptで呼び出す流れです。
以下がブラウザ上で動作させるためのHTMLのコードです。

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 5 <title>最新情報</title> 6 <meta charset="utf-8"> 7 <meta name="description" content="堺市の現在の天気の表示をする"> 8 <meta name="author" content="koko"> 9 <meta name="viewport" content="width=device-width, initial-scale=1"> 10 <link rel="stylesheet" href="stylea.css"> 11 <!--[if lt IE 9]> 12 <script src="//cdn.jsdelivr.net/html5shiv/3.7.2/html5shiv.min.js"></script> 13 <script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script> 14 <![endif]--> 15 <!-- ☆Brython関連ファイルをサーバにアップロードした場合には、 16 brython.jsの位置を指定する --> 17 <script src="src/brython.js"></script> 18 <!-- ☆Brython関連ファイルをサーバにアップロードしない場合には、 19 以下の記述を有効にする --> 20 <!--<script src="http://brython.info/src/brython_dist.js"></script>--> 21 </head> 22 <body onload="brython()"> 23 <script type="text/python" src="omikuji_tenki3.py"></script> 24 <!-- Place your content here --> 25 <!-- SCRIPTS --> 26 <!-- Example: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> --> 27 <div class="main_area"> 28 <h1>堺市の天気</h1> 29 <a href="#" id="submit_button">天気を見る</a> 30 <div id="result"></div> 31 <h2>ボタンを押すと現在の堺市の天気が分かります</h2> 32 <p>「天気を見る」をクリックしてください。すると現在の天気が表示されます。</p> 33 <h2>注意点</h2> 34 <ul> 35 <li>JavaScriptを有効にしてください。</li> 36 <li>ブラウザによってはうまく動作しないおそれがあります。</li> 37 </ul> 38 </div> 39 </body> 40</html>

また、pythonファイルを下記に示します、
ここではまだスクレイピングの記述はしていません。
(一定の確率で、天気の内容がおみくじのように表示させるプログラムです。)

import requests
from bs4 import BeautifilSoup

の2行を入れる前はうまく動きました、

python

1import requests 2from bs4 import BeautifilSoup 3import random 4import browser 5 6 7 8 9KUJI = {"晴れ": 45, "曇": 21, "雨": 10, "雪": 3, "あられ": 1, "みぞれ": 1, "嵐": 2, "猛暑": 12, "台風": 4} 10 11KUJILIST = [] 12for k, v in KUJI.items(): 13 KUJILIST += [k] * v 14 15 16def omikuji(ev): 17 18 # Get the result 19 result = random.choice(KUJILIST) 20 21 # Output 22 res_elt = browser.document["result"] 23 res_elt.text = ("実験") 24 25 26sub_elt = browser.document["submit_button"] 27sub_elt.bind("click", omikuji)

しかし、
import requests
from bs4 import BeautifilSoup
を入れると下記のようなエラーメッセージがブラウザのコンソールに表示されます。

brython.js:7701 GET https://。。。中略。。。/src/Lib/site-packages/bs4.py?v=2 404 (Not Found) $download_module @ brython.js:7701 import_py @ brython.js:7735 import_from_site_packages @ brython.js:7840 $B.$import @ brython.js:7898 $B.$import_from @ brython.js:7915 eval @ VM1067:11 brython @ brython.js:4372 onload @ index_sakai_3.html:22 brython.js:7697 Error 404 means that Python module bs4 was not found at url https://。。。中略。。。/src/Lib/site-packages/bs4.py brython.js:7701 GET https://。。。中略。。。/src/Lib/site-packages/bs4/__init__.py?v=3 404 (Not Found) $download_module @ brython.js:7701 import_py @ brython.js:7735 import_from_site_packages @ brython.js:7840 $B.$import @ brython.js:7898 $B.$import_from @ brython.js:7915 eval @ VM1067:11 brython @ brython.js:4372 onload @ index_sakai_3.html:22 brython.js:7697 Error 404 means that Python module bs4 was not found at url https://。。。中略。。。/src/Lib/site-packages/bs4/__init__.py brython.js:7701 GET https://。。。中略。。。/bs4.py?v=4 404 (Not Found) $download_module @ brython.js:7701 import_py @ brython.js:7735 import_from_caller_folder @ brython.js:7866 $B.$import @ brython.js:7898 $B.$import_from @ brython.js:7915 eval @ VM1067:11 brython @ brython.js:4372 onload @ index_sakai_3.html:22 brython.js:7697 Error 404 means that Python module bs4 was not found at url https://。。。中略。。。/bs4.py brython.js:7701 GET https://。。。中略。。。/bs4/__init__.py?v=5 404 (Not Found) $download_module @ brython.js:7701 import_py @ brython.js:7735 import_from_caller_folder @ brython.js:7866 $B.$import @ brython.js:7898 $B.$import_from @ brython.js:7915 eval @ VM1067:11 brython @ brython.js:4372 onload @ index_sakai_3.html:22 brython.js:7697 Error 404 means that Python module bs4 was not found at url https://。。。中略。。。/bs4/__init__.py brython.js:5200 ImportError: cannot import bs4 Traceback (most recent call last): brython.js:4381 Uncaught Error: cannot import bs4 at Object._b_.ImportError (eval at $make_exc (brython.js:7080), <anonymous>:337:496) at Object.$B.$import (brython.js:7908) at Object.$B.$import_from (brython.js:7915) at eval (eval at brython (brython.js:4372), <anonymous>:11:4) at brython (brython.js:4372) at onload (index_sakai_3.html:22)

また、これについてもう一週間以上調べているのですが、Brython に関する情報がネット上に上がっている情報が少なくどうしようもない状態です。
【わかっていること】
・BrythonではBeautifulSoupはサポートされていない?
=>しかし、実現したい機能をBeautifulSoupを用いずに実現できる方法はあるか?
(モジュールがあるか?)
・beautifulsoup4、requestsもインストールされています

Linux

1[ec2-user@ip-172-31-45-219 ~]$ sudo pip list 2Package Version 3---------------- --------- 4beautifulsoup4 4.8.1 5boto 2.49.0 6boto3 1.14.49 7botocore 1.17.49 8browser 0.0.1 9brython 3.8.9 10bs4 0.0.1 11certifi 2019.9.11 12chardet 3.0.4 13cssselect 1.0.3 14docutils 0.15.2 15EasyProcess 0.3 16entrypoint2 0.2.1 17gensim 3.8.3 18idna 2.8 19jeepney 0.4.3 20jmespath 0.10.0 21lxml 4.5.0 22mss 6.0.0 23mysqlclient 1.4.4 24numpy 1.17.3 25Pillow 7.2.0 26pip 19.2.1 27pyscreenshot 2.2 28python-dateutil 2.8.1 29pytz 2019.3 30PyVirtualDisplay 0.2.4 31requests 2.22.0 32s3transfer 0.3.3 33scipy 1.5.2 34selenium 3.141.0 35setuptools 40.6.2 36six 1.15.0 37smart-open 2.1.1 38soupsieve 1.9.5 39tqdm 4.37.0 40urllib3 1.25.6

分からない文章があれば、お申し付けください。

何卒よろしくお願い申し上げます。

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

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

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

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

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

nto

2020/09/09 03:33

通常、bs4というライブラリをインストールし、インポート時には「from bs4 import BeautifilSoup」という記述でインポートするものですが、それでも解決しませんか? 同一環境でテストが出来ない為宜しければ今一度お試し下さい。
n_pome

2020/09/09 04:51

この質問にご回答くださいまして、ありがとうございます。 bs4をインストールいたしました。そして更新しましたが、 うまく動いてくれません。その後のエラーメッセージは上記の質問内容の部分に更新しております。
guest

回答1

0

現状、BrythonではBeautifulSoup等の複雑な機能はサポートされていません。

実現したい機能をBeautifulSoupを用いずに実現できる方法はあるか?

「実現したい機能」がなんなのか、によります。

実現したい機能が、単に「日本のある地域の天気を取得する」というのであれば、
スクレイピングなんかに頼らずに、天気取得apiをjavasciptで叩いて取得すればよいでしょう。

「実現したい機能」があくまで、pythonでのBeautifulSoupによるスクレイピングならば
pythonアプリケーションをたとえばflaskやdjango等で構築し、バックエンドでスクレイピングするという形になるでしょう。

前提としてスクレイピング対象のサイトがスクレイピングを許可している必要はあります。

当たり前ですが、スクレイピングが禁止されているサイトをスクレイピングしてはいけません。

投稿2020/09/22 08:49

sfdust

総合スコア1137

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問