はじめにとインストール:
自動テストツールとしてのSeleniumは、主にWebページのテストに使用されます。Pythonクローラーでは、このツールを使用して、ブラウザーの起動、Webページのオープン、前後、要素の配置、キーボード入力などのWebページ要素を操作できます。マウスクリック操作などで。ブラウザで操作できる限り、セレンを使って
OKを達成できると言えます。まずはセレンをインストールする必要があり
ます。コンピュータにPythonとpipがインストールされている場合は、
pipインストールセレン
インストールが完了した後、このコマンドをテストする必要があります
from selenium import webdriver
调用FireFox浏览器
broswer=webdriver.Firefox()
打开百度
broswer.get('http://www.baidu.com')
显示百度的源代码
print(broswer.page_source)
このようにして、FirefoxからBaiduのページを開き、Baiduのソースコードを表示できます。
PS:ページはブラウザで開かれているため、この時点でのソースコードはJSレンダリング後のソースコードです。
コードの実行中にエラーが発生した場合、システムはFirefoxを起動できず、エラーコードは
selenium.common.exceptions.WebDriverException:メッセージ: 'geckodriver'実行可能ファイルはPATHにある必要があります。
理由1:セレンのバージョンが低すぎて対応するバージョンのFirefoxをサポートできません。解決策:最新のセレンをダウンロードしてインストールします(この理由は一般的にはありません)
理由2. Firefox47以降のバージョンを使用している場合はサードパーティのドライバgeckodriverをダウンロードしてから、geckodriver.exeをpython.exeと同じディレクトリに配置するか、geckodriver.exeが配置されているディレクトリを環境変数に追加します。
要素操作
セレンのインストールが完了すると、それを使用してWebサイトを操作できます。
まず、ページがさまざまな要素によってスプライスされていることがわかります。ページを変更する必要があります。まず、必要な場所を見つける必要があります。変更されたページ要素。
Baiduを例にとると、Baiduの検索ボックスがそのような要素であることがわかります。
input id =” kw” name =” wd” class =” s_ipt” value =”” maxlength =” 255” autocomplete =” off”
次に、この要素を見つけて、検索ボックスを操作します
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
broswer=webdriver.Firefox()
broswer.get('http://www.baidu.com')
通过id定位百度搜索框
searchItem=broswer.find_element_by_id('kw')
等待3秒
time.sleep(3)
向搜索框发送文字:图片
searchItem.send_keys('图片')
点击回车
searchItem.send_keys(Keys.ENTER)
显示当前页面的源代码
print(broswer.page_source)
コードを実行すると、システムは最初にFirefoxブラウザーを開き、ブラウザーは自動的にBaiduページを開き、3秒後に待機します。検索ボックスにテキストが自動的に入力され、Enter
Whyshouldをクリックします。
time.sleep(3)
この操作では、Webページの読み込みに時間がかかるため、先に進む前に、Webページのすべての要素が読み込まれていることを確認する必要があります。
ちょうど今、Enterキーを使用して検索を完了しました。次に、検索ボタンをクリックして操作します。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
broswer=webdriver.Firefox()
broswer.get('http://www.baidu.com')
通过id定位百度搜索框
searchItem=broswer.find_element_by_id('kw')
通过class定位“百度一下”按钮
searchButton=broswer.find_element_by_class_name('bg s_btn')
等待3秒
time.sleep(3)
向搜索框发送文字:图片
searchItem.send_keys('图片')
点击搜索按钮
searchButton.click()
显示当前页面的源代码
print(broswer.page_source)
上記のコードを実行する前のコードと同じ操作ですが
、検索が完了した後のページである検索ボタンをクリックして検索を完了します。
セレンのページ要素の配置方法については、このブログを参照してください
。SeleniumWebdriverでの要素の配置の8つの一般的な方法
フレーム切り替え
ページには多くのiframeフレームワークが含まれていることが多く、フレームワーク間に多くの要素が配置されています。
たとえば、ランディングページのQQスペースをシミュレートする必要があります。
ログインしたQQアバターをクリックしてログインします。まず、アバターの要素IDを「img_out_1356306040」として取得し、次に進みます。
from selenium import webdriver
import time
broswer=webdriver.Firefox()
broswer.get(url='https://i.qq.com')
time.sleep(2)
broswer.find_element_by_id('img_out_1356306040').click()
プログラムを実行すると、コンピューターでこのエラーが発生します
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="img_out_1356306040"]
このコードは、id =” img_out_1356306040”のそのような要素が見つからなかったことを示しています。
このページの構成を詳しく見てみましょう
ログインアバターの位置はid = "login_frame"のiframeフレームに配置されていることがわかります。そのため、最初にこのフレームを見つける必要があり、次にフレーム内の特定の要素を見つけることができます。
from selenium import webdriver
import time
broswer=webdriver.Firefox()
broswer.get(url='https://i.qq.com')
time.sleep(2)
定位到'login_frame'框架
broswer.switch_to.frame('login_frame')
broswer.find_element_by_id('img_out_1356306040').click()
返回至默认框架
broswer.switch_to.default_content()
print(broswer.page_source)
上記のコードを実行すると、QQスペースに正常にログインできます
総括する:
上記はセレンの簡単な使い方です。セレンを使ってウェブページでさまざまな操作を行うことができます。ブラウザが実行できる操作は、セレンを介して実行できるかのように感じます。つまり、非常に強力なツールです。セレンを使用すると、さらに多くのことができます。 pythonクローラーを使用してインターネットデータをクロールします