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

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

ただいまの
回答率

90.35%

  • Python 3.x

    7393questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 133

s-uchi

score 12

 前提・実現したいこと

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

イメージ説明

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

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

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

6/ 16/ 26/ 36/ 46/ 56/ 66/ 76/ 86/ 9


(残り20日分の改行のみされています)


fin

 該当のソースコード

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless') 
browser = webdriver.Chrome(chrome_options=options) 
browser.implicitly_wait(3)
url_user = "https://xxxxxxxxxxx"
browser.get(url_user) 
for i in range(31):
    # 2列目の「日にち」text取得
    xpath = "//*[@id='dataRow-%d']/td[2]" % (i+1)
    day = browser.find_element_by_xpath(xpath).text 
    # 3列目の「曜日」text取得
    xpath = "//*[@id='dataRow-%d']/td[3]" % (i+1)
    week = browser.find_element_by_xpath(xpath).text; 
    # 出力
    print(week, day)

 やったこと

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • oikashinoa

    2018/07/10 19:36

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

    キャンセル

回答 2

checkベストアンサー

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/11 22:23

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python 3.x

    7393questions

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