タイトルが釣りだったらごめんなさい。
SeleniumでChat GPTを操ってなにか面白いことをする、とかいう話ではありません。
Seleniumでスクレイピングをしていて詰まったとき、Chat GPTに尋ねると結構ヒントをもらえるのでありがたいな、と。
そういうお話です。
ただし、現在のモデル3.5ですか?
データが2021年のものを使っているという話ですが。
そのせいか、取得したいサイトのURLを貼り付けて「どうにかしてくれ!」みたいなリクエストはあんまり成果が出ないです。
多分、2021年当時のそのURLの情報は持っているということなのでしょう。
「こちらの情報ではこのようになります。」みたいな出力をされて、あまり役に立ちません。
メジャーなサイトでも、というかメジャーだからこそかもしれませんが、2年くらいでサイト構成なんてのは、結構変わるものなのですね。
CBOEのサイトとか事前告知なしでまるっきり変わっていたりして朝起きてマーケットを見る段になって難儀する、みたいなことも。
サイト運営者からすると、ある程度はスクレイパー対策でやってるんだ、ということはあるのでしょうけれども。
だからこそSeleniumとかBeautifulSoupとかの手法を教えてくれるところは数多くあれど、どこかのサイトをスクレイピングするソフトとかはあまり見ないのでしょう。
スクレイピング自体への問題意識からというより、詰まったとき自分である程度直せる人でないとやれない、ということなのかもしれません。
で、そんなときにもChat GPTを使って何とかすることはできます。
心当たりのありそうな箇所のHTMLを貼り付けて、取得できない状況とかエラーメッセージなどを雑に書き込んで投げるとそれなりの回答が返ってきます。
たとえ自分に部下がいてもこんな投げにまともな回答が返ってくることは無さそうです。
というか日本語としても成立しているかどうか不明なレベルのものを入力してやるだけで、助言をもらえるというのはありがたいですね。
ぐだぐだと投げかけてキャッチボールをしているうちに自分の思考も整理されてきます。
こういう方向性で考えているんだけど、みたいなことをひたすら書き出してやっても、それなりに打ち返してくれます。
相手は人間じゃないので、無体なことを言ってもさじを投げないのはありがたい。
それに、回答がイマイチだな、とおもったら「Regenerate response」のボタンを押せば良い。
あるいは質問文を書き直してやるとか。
やり取りをするなかで、おぉ、そんな手があったか、みたいな驚きとか、AI相手に一人で興奮してどうする、みたいな話ではあるのですが、我々の老後はこうやって機械に面倒を見てもらうことになるのでしょう。
そんなSelenium話ですが小ネタを一つ。
これもChat GPTに教わりました。
h4_titles = driver.find_elements_by_css_selector("h4")
for h4_title in h4_titles:
main_category = h4_title.text
ul_tag = h4_title.find_element_by_xpath('following-sibling::ul[1]')
li_tags = ul_tag.find_elements_by_css_selector("li")
sub_category = li_tag.find_element_by_css_selector("a").text
sub_category_url = li_tag.find_element_by_css_selector("a").get_attribute("href")
print(main_category +':'+ sub_category +':'+ sub_category_url)
categories.append([main_category, sub_category, sub_category_url])
except NoSuchElementException:
print("最後のカテゴリーにはサブカテゴリーがありません。")
h4_titles = driver.find_elements_by_css_selector("h4")
for h4_title in h4_titles:
main_category = h4_title.text
print(main_category)
try:
ul_tag = h4_title.find_element_by_xpath('following-sibling::ul[1]')
li_tags = ul_tag.find_elements_by_css_selector("li")
for li_tag in li_tags:
sub_category = li_tag.find_element_by_css_selector("a").text
sub_category_url = li_tag.find_element_by_css_selector("a").get_attribute("href")
print(main_category +':'+ sub_category +':'+ sub_category_url)
categories.append([main_category, sub_category, sub_category_url])
except NoSuchElementException:
print("最後のカテゴリーにはサブカテゴリーがありません。")
h4_titles = driver.find_elements_by_css_selector("h4")
for h4_title in h4_titles:
main_category = h4_title.text
print(main_category)
try:
ul_tag = h4_title.find_element_by_xpath('following-sibling::ul[1]')
li_tags = ul_tag.find_elements_by_css_selector("li")
for li_tag in li_tags:
sub_category = li_tag.find_element_by_css_selector("a").text
sub_category_url = li_tag.find_element_by_css_selector("a").get_attribute("href")
print(main_category +':'+ sub_category +':'+ sub_category_url)
categories.append([main_category, sub_category, sub_category_url])
except NoSuchElementException:
print("最後のカテゴリーにはサブカテゴリーがありません。")
H4タグのタイトルの下に載っているリストを取りたいんだけど、構造としては下ではなく同階層なんでどうしたもんかな、と思ったのですが、同階層でその後ろにくるものを拾い上げるxpathコマンドに「following-sibling」というものがあるのでした。
Chat GPTのおかげで一つ賢くなりました。
Selenium本
Selenium実践入門 自動化による継続的なブラウザテスト (WEB+DB press plusシリーズ) [ 伊藤望 ]
3,630円(税込)【送料込】
楽天ブックス
自動化による継続的なブラウザテスト WEB+DB press plusシリーズ 伊藤望 戸田広 技術評論社セレニウム ジッセン ニュウモン イトウ,ノゾミ トダ,ヒロシ 発行年月:2016年02月02
【中古】 Selenium実践入門 自動化による継続的なブラウザテスト WEB+DB PRESS plusシリーズ/伊藤望(著者),戸田広(著者),沖田邦夫(著者),宮田淳平(著者),長谷川淳(著者)
847円(税込)【送料別】
ブックオフ 楽天市場店
伊藤望(著者),戸田広(著者),沖田邦夫(著者),宮田淳平(著者),長谷川淳(著者)販売会社/発売会社:技術評論社発売年月日:2016/01/01JAN:9784774178943
Seleniumデザインパターン & ベストプラクティス [ DimaKovalenko ]
3,300円(税込)【送料込】
楽天ブックス
DimaKovalenko 太田健一郎 オライリー・ジャパン オーム社セレニウム デザインパターン アンド ベストプラクティス ディマコヴァレンコ オオタケンイチロウ 発行年月:2015年09月25日
実践Selenium WebDriver [ サタヤ・アバサララ ]
3,300円(税込)【送料込】
楽天ブックス
サタヤ・アバサララ 玉川竜司 オライリー・ジャパン オーム社ジッセン セレニウム ウェブドライバー アバサララ,サタヤ タマガワ,リュウジ 発行年月:2014年09月 ページ数:240p サイズ:単行
Job Interview Questions & Answers of Selenium Automation QA Our technique to success【電子書籍】[ chirag g
506円(税込)【送料込】
楽天Kobo電子書籍ストア
<p>If you read this book, you will definitely be successful in your QA automation interview.</p> <p>