PythonのクローラーツールSeleniumの使い方を詳しく解説
はじめに:
Python を使用して動的ページをクロールする場合、通常の urllib2 は実装できません。たとえば、以下の JD.com ホームページでは、スクロール バーが引き下げられると新しいコンテンツが読み込まれ、urllib2 はこれをクロールできません。コンテンツ この時点で、今日の主人公セレンが必要です。
Selenium は Web アプリケーションをテストするためのツールです。 Selenium テストは、実際のユーザーと同じようにブラウザーで直接実行されます。サポートされているブラウザには、IE、Mozilla Firefox、Mozilla Suite などが含まれます。また、これを使用してページをクロールするのにも非常に便利です。アクセス手順に従うだけで、Cookie やセッションの処理を心配する必要がなく、アカウントとパスワードを入力することもできます。次に、ログイン ボタンをクリックします。バーの上のスクロールの場合は、ブラウザを一番下までスクロールしてページを保存するだけです。上記の関数は、一部のアンチクローラー メカニズムに対処する場合に非常に役立ちます。次に、説明の本文を開始し、ログインを必要とする動的 Web ページのクローリングを実装します。
ケースの実装:
selniumを使用するには、呼び出し元のブラウザを選択し、対応するドライバーをダウンロードする必要があります。デスクトップバージョンの場合は、Chrome、FireFoxなどを選択でき、サーバー上でPhantomJSを使用できます。変更はブラウザーで確認されるため、通常はデスクトップ版の Chrome でデバッグした後、ブラウザーを PhantomJS に変更し、サーバーにアップロードして実行できます。デモのために PhantomJS を直接使用します
まず、モジュールをインポートします:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium import webdriver
次に、ロードされた Web ページのいくつかの属性をパラメータで指定できます:
cap = webdriver.DesiredCapabilities.PHANTOMJS cap["phantomjs.page.settings.resourceTimeout"] = 180 cap["phantomjs.page.settings.loadImages"] = False driver = webdriver.PhantomJS(executable_path="/home/gaorong/phantomjs-2.1.1-linux-x86_64/bin/phantomjs", desired_capabilities=cap)
PhantomJS は上記で初期化され、ブラウザのパスが設定されます。loading 属性は、リソースの読み込みを選択し、画像の読み込みを行わないようにします (Web ページのテキストのみを考慮します)。ここで他の設定を選択することもできます。
いくつかのプロパティを設定し、Web ページをダウンロードします
driver.set_page_load_timeout(180) driver.get('http://www.php.cn/') time.sleep(5) driver.save_screenshot('./login.png') #为便于调试,保存网页的截图
サーバー側での実行時にはエラーが避けられないため、save_screenshot を使用して現在の Web ページをデバッグ用に保存できます。
次のステップは、アカウントとパスワードを入力してログインし、後のリクエストのために Web サイトの Cookie を取得することです。
#输入username和password driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/input[1]").send_keys('*****') time.sleep(1) print 'input user success!!!' driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/input[2]").send_keys('****') time.sleep(1) print 'input password success!!!' driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/button").click() time.sleep(5)
上記のコードは、find_element_by_xpathを使用して入力ボックスの位置を取得し、アカウントとパスワードを入力してログインボタンをクリックするのが非常に便利であることがわかります。自動的に次のページにジャンプします。数秒間スリープして待つだけです。
クロールする必要がある Web ページ情報は特定の要素内にあるため、この要素が表示されるかどうかを判断する必要があります:
try: element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, 'pulses')) ) print 'find element!!!' except: print 'not find element!!!' print traceback.format_exc() driver.quit()
上記は、クラス 'pulse' の要素が表示されるかどうかを判断します。 10 秒、まだ表示されていない場合、selenum は TimeoutError エラーを引き起こします。
基本的な初期化が上記で実行されました。その後、JD.com などの動的コンテンツを処理する必要があります。そのため、ドロップダウン スクロール バーを実装する必要があります。 :
print 'begin scroll to get info page...' t1 = time.time() n = 60 #这里可以控制网页滚动距离 for i in range(1,n+1): s = "window.scrollTo(0,document.body.scrollHeight/{0}*{1});".format(n,i) #输出滚动位置,网页大小,和时间 print s, len(driver.page_source),time.time()-t1 driver.execute_script(s) time.sleep(2)
ここで、 driver.page_source は Web ページのテキストを取得するためのものです。スクロールが完了したら、それを呼び出してファイルに書き込むことができます。これでプログラムロジックは完成です。
上級:selenim を使用すると、人間が Web を閲覧するのと同等であるため、一般的なクローラ対策戦略に対処できますが、検証コードには追加の処理が必要になるため、アクセス速度が速すぎることはできません。 , 結局のところ、それが遅すぎる場合は、必要に応じてリクエストライブラリを使用して操作できます。
ここでは、参照できる 2 つのブログを紹介します: Python Crawler Tool Five: Selenium の使用法と共通関数
以上がPythonのクローラーツールSeleniumの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。
