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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

Q&A

解決済

1回答

486閲覧

pythonでのスクレイピングについて

K.Andou

総合スコア17

スクレイピング

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

0グッド

0クリップ

投稿2020/10/13 19:18

以下のサイトのLast:の後ろの数字、59.14の部分をスクレイピングしたいと思っています。
https://t3index.com/indices/bit-vol/
イメージ説明

以下のようにコードを書いたのですが

python3

1import urllib.request 2from bs4 import BeautifulSoup 3 4 5def bitvol(): 6 url = "https://t3index.com/indices/bit-vol/" 7 html = urllib.request.urlopen(url) 8 soup = BeautifulSoup(html, "html.parser") 9 10 b = soup.select("#lastvalueBitVol") 11 12 print(b) 13 14bitvol()

結果は
[<span id="lastvalueBitVol"></span>]
と返ってきます。
どこが間違っているのでしょうか、教えてください。

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

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

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

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

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

m.ts10806

2020/10/13 19:52

間違ってるかどうかというより、こういうスクレイピングのような手で情報が抜けないように工夫されていると考えるのが自然ではないでしょうか。 スクレイピングは元よりグレーな部分が多い(むしろ黒の時のほうが多いと思う)ものです。
K.Andou

2020/10/14 04:53 編集

単純にはスクレイピング出来ないということですね。 色々と勉強する機会になりました。
m.ts10806

2020/10/14 04:54

いえ、公にAPIなどが提供されていない情報を許可無しに取得するのは事件に発展する可能性があるという話です。
guest

回答1

0

ベストアンサー

該当のサイトを見ましたが、取得したい数値はグラフが描画された後で表示されていたので、おそらくリクエストして取得したhtmlの中には取得したい数値が入っていないのだと思います。

seleniumでWebブラウザを操作して、グラフや数値が入ってからhtmlの情報を取得して、soup.selectを行えば取得できると思います。

私の環境では下記コードで取得できました。

Python

1from bs4 import BeautifulSoup 2from selenium import webdriver 3from time import sleep 4 5def bitvol(html): 6 soup = BeautifulSoup(html, "html.parser") 7 b = soup.select("#lastvalueBitVol") 8 print(b) 9 10 11driver_path = 'chromedriverへの絶対パス' 12driver = webdriver.Chrome(driver_path) 13 14url = 'https://t3index.com/indices/bit-vol/' 15 16driver.get(url) 17sleep(5) 18bitvol_html = driver.page_source.encode('utf-8') 19 20bitvol(bitvol_html) 21 22# 出力結果 23# [<span id="lastvalueBitVol">59.14</span>]

以下、環境についてです。
Mac OS、PyCharmを使用。
Python 3.8.2
WebブラウザはGoogle Chromeを使用。
chromedriverは下記サイトからDL。
ChromeDriver - WebDriver for Chrome
seleniumはpipでインストール。

pip install selenium

投稿2020/10/13 21:15

takutakuya

総合スコア979

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

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

K.Andou

2020/10/14 04:51

Linux python3.6 でしたが取得できました! 丁寧なご回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問