タイトルが釣りだったらごめんなさい。
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 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のおかげで一つ賢くなりました。