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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

621閲覧

pythonでのスクレイピングで教えていただけますでしょうか。

12344kaza-_0101

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/05/05 23:38

編集2022/05/06 09:06

以下のサイトから「人気」と「オッズ」を取得したいのですがbeautifulを使って取得するとデータが入っていません。
要素画面上には数値は見えています。
どなたかヒントだけでも頂けると助かります。ご教示よろしくお願いします。

url = "https://race.netkeiba.com/race/shutuba.html?race_id=202209021211&rf=top_pickup"

import pandas as pd
from bs4 import BeautifulSoup
import requests

html = requests.get(url)
soup = BeautifulSoup(html.text)
tes = soup.find("table").find("td",class_="Txt_R Popular")

出力結果
td class="Txt_R Popular"><span id="odds-1_01" style="font-weight : bold">---.-</span></td> 
___________________________________ ↑ここに7.8がありません  

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

soup = BeautifulSoup(html.text)

の次の行に print(soup) を入れて実行すると どのような HTML が表示されるでしょうか。

要素画面上には数値は見えています。

と書かれている HTML と同じものが取得できていますか?


Webブラウザと HTML が異なる原因ですが、アクセスしている Web ページは JavaScript でデータを取得してページに値を表示させていますので JavaScript を処理できるツールを使う必要があります。

Chrome や Firefox 等の Web ブラウザは、Webページを表示する際に JavaScript の処理しますが requests は指定したURL からファイルを取得して処理するだけですので、JavaScript の処理はされません。
そのため JavaScript で処理されて追加される内容は反映されません。

Web ブラウザで JavaScript を無効にしてアクセスすると同様な数字のない表示になると思います。

投稿2022/05/06 23:44

CHERRY

総合スコア25171

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

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

12344kaza-_0101

2022/05/07 05:06

cherryさん、回答ありがとうございます。 以下、print(soup)での実行結果で数値は入っていませんでした。 <td class="Txt_R Popular"><span id="odds-1_10" style="font-weight : bold">---.-</span></td> <td class="Popular Popular_Ninki Txt_C"> また、javasprictを無効にすることで見えていた数値も表示されなくなりました。 ご指摘有難うございます。 javascriptを処理できるツールの件ですがNode.jsというものを検索にひっかかりましたがこちらの学習で問題ないでしょうか。何度もすみませんが回答いただけると助かります。 <span id="ninki-1_10">**</span>
CHERRY

2022/05/07 08:32 編集

node.js でも 一緒でしょうね... プログラミング言語の問題ではなく、 Web にアクセスするツールの問題です。 検索するといろいろ出てくると思いますが、JavaScript でページを生成しているサイトの場合は、Webブラウザ操作を自動化する Selenium WebDriver を使う事が多いと思います。
12344kaza-_0101

2022/05/07 10:59

CHERRYさん、さっそくご回答ありがとうございます。 紹介いただいたselenium Webdriver をまずは試してみたいと思います。 大変たすかりましたm(__)m
12344kaza-_0101

2022/05/14 05:03

selenium driver をつかってデータ取得が出来るようになりました。 CHERRYさん、ご教示いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問