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

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

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

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

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

490閲覧

pythonのseleniumを使ったHTMLのテキストボックスへ記載する処理をループする?コードを教えてください。

退会済みユーザー

退会済みユーザー

総合スコア0

スクレイピング

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

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2023/01/19 11:52

編集2023/01/20 01:01

環境

Microsoftedge バージョン 107.0.1418.62

Python3.9.15

Windows10

VScodeでコードを書いております。

ソースコード

Python

1from selenium.webdriver.common.by import By 2from selenium import webdriver 3 4url = "https://〇〇〇" 5driver = webdriver.Edge(executable_path="msedgedriver.exe") 6driver.implicitly_wait(30) 7driver.get(url) 8driver.maximize_window() 9xx = "/html/body/table/tbody/tr[1776]/td[2]/span/span[6]" 10driver.find_element(by = By.XPATH, value = xx).send_keys("0900")

HTML

1 <table class="list" cellspacing="0"> 2 3 4 <!-- 1日分の情報 --> 5 6 <tr> 7 <td width="25" class="date" rowspan="1" style="border-right-width:0pt;"><font color="black">21</font><input type="hidden" name="date" value="20221221" ></td> 8 <td width="20" class="date" rowspan="1" style="border-left-width:0pt;"><font color="black">水</font></td> 9 <td width="28" class="stringField"><span style="background-color:;">&nbsp;</span></td> 10 <td width="50" class="numericField">&nbsp;</td> 11 <td width="49" class="numericField" rowspan="1"> 12 <input type="text" name="start_time" value="0900" size="3" maxlength="4" class="time" onChange="" > 13 </td> 14 15 <td width="76" class="numericField" rowspan="1"> 16 <input type="text" name="suspend_time" value="0.75" size="4" maxlength="5" class="numeric" style="border:0pt;" tabindex="-1" readonly onChange="" > 17 18 <input type="button" name="" value="" class="" onClick="callSuspendPopup(0);" > 19 20 21 <td width="49" class="numericField" rowspan="1"> 22 <input type="text" name="end_time" value="1730" size="3" maxlength="4" class="time" onChange="" > 23 </td> 24 25 <input type="hidden" name="SUSPEND_FROM1" value="1230" > 26 <input type="hidden" name="SUSPEND_TO1" value="1315" > 27 <input type="hidden" name="SUSPEND_REASONE1" value="15" > 28 <input type="hidden" name="SUSPEND_FROM2" value="" > 29 <input type="hidden" name="SUSPEND_TO2" value="" > 30 <input type="hidden" name="SUSPEND_REASONE2" value="" > 31 <input type="hidden" name="SUSPEND_FROM3" value="" > 32 <input type="hidden" name="SUSPEND_TO3" value="" > 33 <input type="hidden" name="SUSPEND_REASONE3" value="" > 34 <input type="hidden" name="SUSPEND_FROM4" value="" > 35 <input type="hidden" name="SUSPEND_TO4" value="" > 36 <input type="hidden" name="SUSPEND_REASONE4" value="" > 37 <input type="hidden" name="SUSPEND_FROM5" value="" > 38 <input type="hidden" name="SUSPEND_TO5" value="" > 39 <input type="hidden" name="SUSPEND_REASONE5" value="" > 40 <input type="hidden" name="SUSPEND_FROM6" value="" > 41 <input type="hidden" name="SUSPEND_TO6" value="" > 42 <input type="hidden" name="SUSPEND_REASONE6" value="" > 43 <td width="54" class="numericField" rowspan="1">7.75</td> 44 <td width="66" class="numericField" rowspan="1">7.75</td> 45 <td width="54" class="numericField" rowspan="1">0.00</td> 46 <td width="66" class="numericField" rowspan="1">0.00</td> 47 <td width="52" class="numericField" rowspan="1">&nbsp;</td> 48 <td width="52" class="numericField" rowspan="1">&nbsp;</td> 49 <td width="52" class="numericField" rowspan="1">&nbsp;</td> 50 <td width="28" rowspan="1" style="text-align:center"> 51 52 <input type="checkbox" name="all_day" value="0" onClick="" onChange="" > 53 54 </td> 55 <td width="52" class="FormField" rowspan="1" style="text-align:right"> 56 57 <input type="text" name="half_day" value="0" size="1" maxlength="1" class="numeric" onChange="" >回 58 59 </td> 60 61 <td width="40" rowspan="1" style="text-align:center"> 62 63 <input type="checkbox" name="zaitaku_kinmu_k" value="0" onClick="" onChange="" > 64 65 </td> 66 67 68 </tr> 69 70 71 <!-- 1日分の情報 --> 72 73 <tr> 74 <td width="25" class="date" rowspan="1" style="border-right-width:0pt;"><font color="black">22</font><input type="hidden" name="date" value="20221222" ></td> 75 <td width="20" class="date" rowspan="1" style="border-left-width:0pt;"><font color="black">木</font></td> 76 <td width="28" class="stringField"><span style="background-color:white;">A3</span></td> 77 <td width="50" class="numericField">&nbsp;</td> 78 <td width="49" class="numericField" rowspan="1"> 79 <input type="hidden" name="start_time" value=""> 80 </td> 81 82 <td width="76" class="numericField" rowspan="1"> 83 <input type="text" name="suspend_time" value="" size="4" maxlength="5" class="numeric" style="border:0pt;" tabindex="-1" readonly onChange="" > 84 85 86 87 88 <td width="49" class="numericField" rowspan="1"> 89 <input type="hidden" name="end_time" value=""> 90 </td> 91 92 <input type="hidden" name="SUSPEND_FROM1" value="" > 93 <input type="hidden" name="SUSPEND_TO1" value="" > 94 <input type="hidden" name="SUSPEND_REASONE1" value="" > 95 <input type="hidden" name="SUSPEND_FROM2" value="" > 96 <input type="hidden" name="SUSPEND_TO2" value="" > 97 <input type="hidden" name="SUSPEND_REASONE2" value="" > 98 <input type="hidden" name="SUSPEND_FROM3" value="" > 99 <input type="hidden" name="SUSPEND_TO3" value="" > 100 <input type="hidden" name="SUSPEND_REASONE3" value="" > 101 <input type="hidden" name="SUSPEND_FROM4" value="" > 102 <input type="hidden" name="SUSPEND_TO4" value="" > 103 <input type="hidden" name="SUSPEND_REASONE4" value="" > 104 <input type="hidden" name="SUSPEND_FROM5" value="" > 105 <input type="hidden" name="SUSPEND_TO5" value="" > 106 <input type="hidden" name="SUSPEND_REASONE5" value="" > 107 <input type="hidden" name="SUSPEND_FROM6" value="" > 108 <input type="hidden" name="SUSPEND_TO6" value="" > 109 <input type="hidden" name="SUSPEND_REASONE6" value="" > 110 <td width="54" class="numericField" rowspan="1">&nbsp;</td> 111 <td width="66" class="numericField" rowspan="1">&nbsp;</td> 112 <td width="54" class="numericField" rowspan="1">&nbsp;</td> 113 <td width="66" class="numericField" rowspan="1">&nbsp;</td> 114 <td width="52" class="numericField" rowspan="1">&nbsp;</td> 115 <td width="52" class="numericField" rowspan="1">&nbsp;</td> 116 <td width="52" class="numericField" rowspan="1">&nbsp;</td> 117 <td width="28" rowspan="1" style="text-align:center"> 118 119 <input type="checkbox" name="all_day" value="1" onClick="" onChange="" > 120 121 </td> 122 <td width="52" class="FormField" rowspan="1" style="text-align:right"> 123 124 <input type="text" name="half_day" value="0" size="1" maxlength="1" class="numeric" onChange="" >回 125 126 </td> 127 128 <td width="40" rowspan="1" style="text-align:center"> 129 130 <input type="checkbox" name="zaitaku_kinmu_k" value="1" onClick="" onChange="" > 131 132 </td> 133 134 135 </tr>

やりたい事

日付の上からname属性の"start_time"のvalueを確認していって、

値が入力されていれば、何も処理せず、次の日へ移行し、

値が入力されていなければ、0900を入力したいです。

ただし、添付画像は上から3日分の情報になります。

2日目は、valueの値が""となっていますが、

これはテキストボックスがそもそも配置されていない状態になります。

その場合は、スキップして次の日へ移行するという処理にしたいです。

やってみた事/試してみた事

XPATHを取得し、添付画像の3日間は下記だと分かったのですが、

21日 /html/body/table/tbody/tr[1776]/td[2]/span/span[6]

22日 /html/body/table/tbody/tr[1843]/td[2]/span/span[6]

23日 /html/body/table/tbody/tr[1910]/td[2]/span/span[6]

xx = "/html/body/table/tbody/tr[1776]/td[2]/span/span[6]"

driver.find_element(by = By.XPATH, value = xx).send_keys("0900")

としても

driver.find_element(by = By.XPATH, value = xx).send_keys("0900")

AttributeError: 'NoneType' object has no attribute 'send_keys'

というエラーが出ており、上手くいっておりません。

また、仮に上記のエラーが上手くいったとしても、いまいちやりたい事にある、

次の日へ移行するという処理が分からなかったため、質問させて頂きました。
諸事情により、URLを載せることが出来ず、分かりにくい質問になってしまい、
申し訳ありません。

ご教授頂ければ幸いです。宜しくお願い致します。イメージ説明

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

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

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

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

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

can110

2023/01/19 11:58

URL部分は不整合あれば適当に伏せてかまいませんが、コードは画像ではなく、かつ第三者が検証しやすいように最低限そのまま実行できるように提示すると回答得られやすくなるかと思います。 (質問を修正するのが面倒くさいなら無視してください)
退会済みユーザー

退会済みユーザー

2023/01/19 12:03

コメント、ありがとうございます。現在出先にて、コードは載せられませんが、戻り次第、掲示するように対応します。文字数制限があるのかなぁと思って画像にした次第でした。文字数制限に引っかからなければ、HTMLとソースコード含め、掲示させて頂きます。アドバイスありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問