指定したclassの数をカウントする
この回数分の処理を繰り返す。
def check_datenum(self): elements = self.driver.find_elements_by_class_name(self.key_class) return len(elements)
Xpathであいまい検索、ワイルドカード
Xpath自体はChromeのデバッグで、検証からコピーしています。
//*[@id="IDname_20211004"]/dd/ul[1]/li[1]/a ↑だった場合に xpath= '//*[contains(@id,"IDname_")]/dd/ul[1]/li[1]/a'
URLの連番の一部をループで回して作ってしまう
##レース開催日分のレース詳細を取りに行く ## この時にclass内で第一レースのURLは予想して入れてしまう for i in range(1, num+1): CD.key_URL = 'https://.jp/a' + str(i) + '0001/nav_btn' CD.table_name = 'detail' CD.key_tag = 'a' CD.ifstr = "nav_btn" CD.dget() linklists = CD.check_txtnum() print(linklists)
ドライバー準備のオプション設定
class DClass(): def __init__(self): #ドライバー呼び出し self.driver_option() def driver_option(self): options = webdriver.ChromeOptions() options.add_argument('disable-infobars') options.add_argument('--no-sandbox') options.add_argument('--headless') options.add_argument('--window-size=1024,768') user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36" options.add_argument('--user-agent=' + user_agent) driver = webdriver.Chrome(options=options); driver.implicitly_wait(25) driver.set_page_load_timeout(25) self.driver = driver
マルチスレッド化
windowsアプリ制作の時に使用。
そうしないとボタン動作でアプリは動作しているが、画面上はフリーズしたように見えてしまうため。
def callback(self): th = threading.Thread(target=self.DF_MAKE) th.start()
対象URLのリトライ関連
j = 0 while j < 9: try: self.driver.get(self.key_URL) print("The page was loaded " + self.key_URL) except TimeoutException: j = j + 1 print("Timeout, Retrying... (%(j)s/%(max)s)" % {'j': j, 'max': 9}) time.sleep(15) continue else: break sleep(3)

当サイトはリンクフリーです。
ご自身のブログでの引用、TwitterやFacebook、Instagram、Pinterestなどで当サイトの記事URLを共有していただくのは、むしろありがたいことです。
事前連絡や事後の連絡も不要ですが、ご連絡いただければ弊社も貴社のコンテンツを紹介させていただく可能性がございます。