あなたが初心者で、データ抽出用の Web クローラーを作成したい場合は、selenium をお勧めしますが、 selenium webdriver は、scrapy (Web クローラーをコーディングするための Python フレームワーク) よりも低速です。
Selenium を使用するようにアドバイスされているので、Python を使用した Selenium のみに焦点を当てます。
あなたの最初の問題:「このサイトからそのような情報を取得する方法」
データを抽出する Web サイトがwww.fundsupermart.co.inであるとします(新しいウィンドウのポップアップを処理する方法を示すためにこれを選択しました)。
Selenium を使用すると、次のように記述してクロールできます。
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://www.fundsupermart.co.in/main/fundinfo/mutualfund-AXIS-BANKING-DEBT-FUND--GROWTH-AXS0077.html')
get()
これにより、Firefox ブラウザーの Web ドライバーが開き、メソッドで提供されたリンクのページが読み込まれます。
ここで、テーブルを抽出する場合は、selenium が提供する関数を使用して、tag_name、xpath、または class_name を使用して抽出できるとします。「投資目的」の下にテーブルを抽出する場合は、次のようにします。
次に、このために私は次のことを行います。
right click -> inspect element -> find the appropriate tag from console -> right click -> copy xpath
ここで、<tbody>
タグがテーブルを抽出できるタグであることがわかったので、それを右クリックし、[xpath のコピー] をクリックして、そのタグの xpath を取得しました。
xpath=/html/body/table/tbody/tr[2]/td/table/tbody/tr[3]/td/table[2]/tbody/tr/td/table/tbody/tr[1]/td/font/table/tbody/tr[1]/td/table/tbody/tr[5]/td/table/tbody
次に、コードに次の行を追加します。
driver.find_element_by_xpath(xpath).text
同様に、任意の Web サイトから他のデータを抽出することもできます。こちらのセレンのドキュメントも参照してください。
2 番目の問題:「この追加ウィンドウで情報をスクレイピングするにはどうすればよいですか?」
リンクをクリックするにはclick()
、セレンが提供する機能を使用できます。ここで、リンクをクリックするとします。Click here for price history
次に、(以前に行ったように) xpath を取得し、次の行を追加します。
driver.find_element_by_xpath(xpath).click()
次のような新しいウィンドウを開きます。
新しいウィンドウからデータを抽出するには、次の行を追加して新しいウィンドウに切り替える必要があります。
windows = driver.window_handles
driver.switch_to_window(windows[1])
さて、これを行うことで、webdriver を新しいウィンドウに切り替えました。以前と同じようにデータを抽出し、このウィンドウを閉じて元のウィンドウに戻すには、次のように追加します。
driver.close()
driver.switch_to_window(windows[0])
これは、セレンを使用した Web クローラーの非常に基本的で素朴なアプローチでした。ここで提供されるチュートリアルは非常に優れており、大いに役立ちます。