目次
はじめに: " >はじめに:
ケースの実装: " > ケースの実装:
ホームページ バックエンド開発 Python チュートリアル PythonのクローラーツールSeleniumの使い方を詳しく解説

PythonのクローラーツールSeleniumの使い方を詳しく解説

Mar 08, 2017 am 11:25 AM
Python クローラー

はじめに:

Python を使用して動的ページをクロールする場合、通常の urllib2 は実装できません。たとえば、以下の JD.com ホームページでは、スクロール バーが引き下げられると新しいコンテンツが読み込まれ、urllib2 はこれをクロールできません。コンテンツ この時点で、今日の主人公セレンが必要です。

PythonのクローラーツールSeleniumの使い方を詳しく解説

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

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

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

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

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

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

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

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

正規表現とは何ですか? 正規表現とは何ですか? Mar 20, 2025 pm 06:25 PM

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

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

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

文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

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

人気のあるPythonライブラリとその用途は何ですか? 人気のあるPythonライブラリとその用途は何ですか? Mar 21, 2025 pm 06:46 PM

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

See all articles