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

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

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

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

Q&A

解決済

2回答

1572閲覧

pythonでのwebスクレイピングで表のテキストが10行目以降取得できません。

s-uchi

総合スコア101

Python 3.x

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

0グッド

0クリップ

投稿2018/07/10 07:24

編集2018/07/10 11:26

前提・実現したいこと

PYTHONの勉強としてwebスクレイピングしてます。
やりたいことは社内の勤怠システムの残業時間から月末の残業代を試算するスクリプト作成です。
下が勤怠システムの画面です。(社内システムのためURLは載せれません。すみません。)

イメージ説明

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

printされるメッセージが6/9以降空行が出力されてしまいます。
何か考えられる要因はありますでしょうか?
デバッグ方法のアドバイスでも良いのでご意見頂ければと思います。

(追記)
options.add_argument('--headless') をコメントアウトしてみると
15行目まで出力されるようになりました。
表示された画面上もだいたい15秒目まで表示され、以降はスクロールしないと見えない状態でした。
要はスクロールで隠れてる部分が出力できないようです。
ここまでは分かりましたが、対策が分かりません。
ご存知の方がいらっしゃればご教授願います。

bash

16/ 1 26/ 2 36/ 3 46/ 4 56/ 5 66/ 6 76/ 7 86/ 8 96/ 9 10 11 12(残り20日分の改行のみされています) 13 14 15fin

該当のソースコード

python

1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3 4options = Options() 5options.add_argument('--headless') 6browser = webdriver.Chrome(chrome_options=options) 7browser.implicitly_wait(3) 8url_user = "https://xxxxxxxxxxx" 9browser.get(url_user) 10for i in range(31): 11 # 2列目の「日にち」text取得 12 xpath = "//*[@id='dataRow-%d']/td[2]" % (i+1) 13 day = browser.find_element_by_xpath(xpath).text 14 # 3列目の「曜日」text取得 15 xpath = "//*[@id='dataRow-%d']/td[3]" % (i+1) 16 week = browser.find_element_by_xpath(xpath).text; 17 # 出力 18 print(week, day) 19 20

やったこと

同じような表があるurlで同スクリプトを動かすと
10行目以降もちゃんと表内のテキストが取得できました。

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

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

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

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

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

oikashinoa

2018/07/10 10:36

webスクレイピング対象のHTMLをUpするか、質問者が見直すと気づきが有ると思いますよ。
guest

回答2

0

ベストアンサー

browser.get(url_user) の後にhtml 全体を取って内容を確認しては?

infinity scrollのように動的に非表示部分を生成しているのでわ?

投稿2018/07/10 23:19

oikashinoa

総合スコア2826

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

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

s-uchi

2018/07/11 13:23

ありがとうございます。 html 全体を取って、pandasに渡すと綺麗に解決できました。
guest

0

要因としては、HTMLをちゃんと読み解けていないと言う事に尽きると思います。

投稿2018/07/10 08:08

otn

総合スコア84538

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問