0

この件に関する初心者ヘルプのスレッドをようやく見つけましたが、プログラミングの初心者であることもあり、この問題を解決する方法はありません:)

スレッドは次のとおりです: 初心者: Javascript の「onclick」ボタンを克服して Web ページをスクレイピングする方法は?

同様の問題があります。スクレイピングしたいサイトには多くの部品の情報がありますが、特定の部品情報 (会社、部品番号など) だけをスクレイピングしたいと考えています。2 つの問題があります。

  1. 検索情報を入力する必要なく、このサイトからそのような情報を取得するにはどうすればよいですか? クローラーを使用しますか?

  2. 部品番号にはページ上のほとんどの情報が含まれていますが、ページ上には Javascript の「onclick()」関数があり、クリックすると小さなウィンドウが開き、さらにスクレイピングしたい情報が表示されます。この追加ウィンドウで情報を取得するにはどうすればよいですか?

私は import.io を使用していますが、Selenium と PhantomJS に切り替えるように勧められています。他のツールについて、複雑すぎない(または提供された指示、それは素晴らしいでしょう!)他の提案を歓迎します。誰かがこの問題を解決するのを手伝ってくれたり、指示をくれたりしてくれたら本当にありがたいです. ありがとうございました。

4

1 に答える 1

2

あなたが初心者で、データ抽出用の 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 クローラーの非常に基本的で素朴なアプローチでした。ここで提供されるチュートリアルは非常に優れており、大いに役立ちます。

于 2014-09-08T10:44:18.670 に答える