Pythonを使用してWebサイトからコンテンツを取得しています。最初にBeautifulSoup
とMechanize
をPythonで使用しましたが、JavaScriptを介してコンテンツを作成するボタンがWebサイトにあることがわかりましたので、Selenium
。
要素を見つけてSeleniumとdriver.find_element_by_xpath
、Seleniumをすべてに使用できるのに、BeautifulSoup
を使用する理由は何ですか?
そして、この特定のケースでは、JavaScriptボタンをクリックするためにSeleniumを使用する必要があるので、Seleniumを使用して解析するのも良いのですか、それともSeleniumとBeautiful Soupの両方を使用するのですか?
質問に直接回答する前に、出発点として一言だけ言っておきましょう。静的HTMLページからコンテンツをプルするだけの場合は、おそらく Requests または組み込みのHTTPライブラリを使用する必要があります。 urllib.request
) lxml
または BeautifulSoup
を使用しますが、Seleniumではありません(ただし、Seleniumでも十分でしょう)。 Seleniumを不必要に使用しないことの利点:
requests
。機能するためにCookieを必要とするサイトがSeleniumを破壊する理由ではないことに注意してください。 cookielib / を使用して、魔法のようにHTTPリクエストでCookieを設定して送信するURLオープン関数を簡単に作成できます。 cookiejar 。
では、なぜSeleniumの使用を検討するのでしょうか。クロールしたいコンテンツがHTMLに焼き付けられるのではなく、JavaScriptを介してページに追加されている場合を処理するためにほぼ完全に。それでも、重い機械を壊すことなく、必要なデータを取得できる場合があります。通常、これらのシナリオの1つが適用されます。
doSeleniumを使用して状況のメリットを判断した場合は、ヘッドレスモードで使用してください。これは、(少なくとも)FirefoxとChromeドライバー。Webスパイダーは通常、実際にページをグラフィカルにレンダリングしたり、ブラウザー固有の癖や機能を使用したりする必要がないため、ヘッドレスブラウザー-CPUとメモリのコストが低く、クラッシュやハングする可動部分が少ない-理想的です。
Seleniumは、本格的なブラウザであっても、ヘッドレスChromeなどのヘッドレスモードのブラウザであっても、Webページの操作などに使用することをお勧めします。また、要素が見つかった場合やWHATが見つかった場合に依存するステートメントを観察および記述し、Seleniumを使用して、ユーザーが希望する場合はページでインタラクティブタスクを実行するには、美しいスープの方が適しているとも言います。