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

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

詳細はこちら
スクレイピング

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

Q&A

2回答

2077閲覧

BeautifulSoupにてbodyタグが表示されない

okometarou

総合スコア4

スクレイピング

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

0グッド

0クリップ

投稿2021/02/28 15:09

編集2021/03/01 13:01

前提・実現したいこと

pythonにて気象庁のホームページ(https://www.jma.go.jp/bosai/amedas/#area_type=offices&area_code=130000&amdno=44132&format=table1h)
から気温と気圧のデータを取得したい

発生している問題・エラーメッセージ

bodyタグの中身が表示されない?
pythonを勉強し始めてまだ日が浅くhtmlの事もわかりません。

該当のソースコード

python
import requests
from bs4 import BeautifulSoup

url = "https://www.jma.go.jp/bosai/amedas/#area_type=offices&area_code=340000&amdno=67401&format=table1h"
html = requests.get(url)
tokyo = BeautifulSoup(html.content, "html.parser")

tokyo_weather = tokyo.find(class_ = "amd-table-seriestable")

試したこと

print(tokyo_weather)を行うとNoneとなる。

補足情報(FW/ツールのバージョンなど)

python 3.8.5

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

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

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

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

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

meg_

2021/02/28 16:19

> bodyタグの中身が表示されない? 質問のコードには”bodyタグの中身”を表示させるコードはないように思いますが、”bodyタグの中身が表示されない”ことはどのように確認されたのでしょうか?
okometarou

2021/03/01 13:03

ご回答ありがとうございます。一行追加させていただきました。 記載の通りNoneとなってしまうため、 print(tokyo)で表示したものを一行ずつ、chromeのデベロッパーツールに表示されるものとを一行ずつ確認しました。
meg_

2021/03/01 13:10

seleniumを使うと良いかもしれません。
okometarou

2021/03/01 13:22

seleniumは初めて聞いて調べたのですが、クロムの自動操作?を行うものという認識でいいのでしょうか? 少し勉強してみます。
guest

回答2

0

質問にあるURL「https://www.jma.go.jp/bosai/amedas/#area_type=offices&area_code=130000&amdno=44132&format=table1h」の中身(ソース)を見てみると、気圧・気温のデータが直接書かれているのではなく、それらのデータを取得するためのJavaScriptが書かれています。

気圧・気温のデータを取得するためには、JavaScriptのソースコードを解釈・実行する必要がある(普通はWebブラウザがJavaScriptのソースコードを実行してくれる)ので、そのURLの内容に対してPythonのrequestsとBeautifulSoupを使うだけでは、やりたいことの実現は難しいと思います。

気象庁|各種データ・資料」から、取得したいデータを探して、CSVファイルなどを取得するURLを見つけるといいかと思います。

投稿2021/03/01 13:16

msiz07

総合スコア172

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

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

okometarou

2021/03/01 13:27

ご回答ありがとうございます。 本を読みながらやってみていたのですが、htmlではないもので書かれているのですね。 現時点での最新(今でしたら22時)の地域における気温や気圧を取得したかったのですが、今の僕には難しそうですね。 ありがとうございました。
msiz07

2021/03/01 13:38

JavaScriptを実行してあれこやるのは難しそうですが、気象庁のページでそれなりの鮮度のデータを提供しているようです。 HTMLの解析がやりたいのではなくデータ取得がしたいなら、以下のURLで、最新からは最大1時間程度は遅れるかもしれませんが、それなりに新しいデータを取得できそうです(今ダウンロードしたら、30分程度前の時点のデータを取得できました)。 [気象庁|最新の気象データ | CSVダウンロードについて](http://www.data.jma.go.jp/obd/stats/data/mdrr/docs/csv_dl_readme.html)
guest

0

そのコードだけだと、HTMLを解析しただけで、それ以上何もしていないので、bodyは表示されません。

投稿2021/02/28 16:50

otn

総合スコア85893

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

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

okometarou

2021/03/01 13:04

ご回答ありがとうございます。 すいません。記載不足でした。更新させていただきました。 記載の通りNoneとなってしまいます。
otn

2021/03/01 14:00

amd-table-seriestable というクラスの要素が存在しないと言うことです。 1.クラス名を間違えている 2.JavaScriptで追加された要素である 3.フレームの中の要素である のどれかですが、2のようですね。Sleniumを使いましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問