Python クローラー学習メモ (7) - Selenium

目次

1. セレンとは何ですか?

2. なぜセレンを使用するのですか?

3.セレンのインストール

4. セレンの使い方

5. セレンの元素配置

6. 要素情報にアクセスする

7. インタラクション


1. セレンとは何ですか?

(1) Selenium は Web アプリケーションをテストするためのツールです。

(2) Selenium テストは、実際のユーザーが操作しているのと同じように、ブラウザーで直接実行されます。

(3) テストを完了するために、さまざまなドライバー (FirfoxDriver、InternetExplorerDriver、OperaDriver、ChromeDriver) を介して実際のブラウザーを駆動するサポート。

(4) Selenium は、インターフェイスなしのブラウザ操作もサポートしています。

2. なぜセレンを使用するのですか?

ブラウザ機能をシミュレートし、Webページ内のjsコードを自動実行し、動的ローディングを実現します。

3.セレンのインストール

(1) Google Chromeドライバーのダウンロードアドレスを操作する

                http://chromedriver.storage.googleapis.com/index.html

(2) Google DriveとGoogle Chromeのバージョン対応表

                 http://blog.csdn.net/huilan_same/article/details/51896672

(3) Google Chromeのバージョンを確認する

                Google Chrome の右上隅 -> ヘルプ -> バージョン情報

(4)pip install Selenium

4. セレンの使い方

(1) インポート: Selenium インポート Webdriver から

(2) Google Chrome 操作オブジェクトを作成します。

                path = Google Chromeドライバーファイルのパス

                ブラウザ = webdriver.Chrome(パス)

(3) アクセスURL

                url = アクセス先の URL

                ブラウザ.get(url)


# (1)导入selenium
from selenium import webdriver

# (2) 创建浏览器操作对象

path = 'chromedriver.exe'

browser = webdriver.Chrome(path)

# (3)访问网站
# url = 'https://www.baidu.com'
#
# browser.get(url)

url = 'https://www.jd.com/'

browser.get(url)

# page_source获取网页源码
content = browser.page_source
print(content)

5. セレンの元素配置

要素の配置: オートメーションで行う必要があるのは、これらの要素、クリック、入力などを操作するためにマウスとキーボードをシミュレートすることです。これらの要素を操作する前に、まず要素を見つける必要があります。WebDriver には要素を見つけるための多くのメソッドが用意されています

方法:

(1)id による要素の検索              

                例:button = browser.find_element_by_id('su')

(2)名前による要素の検索

                例:name = browser.find_element_by_name('wd')

(3)xpath による要素の検索

                例:xpath1 = browser.find_elements_by_xpath('//input[@id="su"]')

(4)タグ名による要素の検索

                例:names = browser.find_elements_by_tag_name('input')

(5)css_selector による要素の検索

                例:my_input = browser.find_elements_by_css_selector('#kw')[0]

(6)リンクテキストによる要素の検索

                例:browser.find_element_by_link_text("ニュース")

注: これらのコードは統合されたため、find_element(by='', value='') を通じてコードを見つけることができます。by の値は属性名で、value は属性値です。


from selenium import webdriver

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'https://www.baidu.com'
browser.get(url)

# 元素定位

# 根据id来找到对象
button = browser.find_element_by_id('su')
print(button)

# 根据标签属性的属性值来获取对象的
button = browser.find_element_by_name('wd')
print(button)

# 根据xpath语句来获取对象
button = browser.find_elements_by_xpath('//input[@id="su"]')
print(button)

# 根据标签的名字来获取对象
button = browser.find_elements_by_tag_name('input')
print(button)

# 使用的bs4的语法来获取对象
button = browser.find_elements_by_css_selector('#su')
print(button)

button = browser.find_element_by_link_text('直播')
print(button)

6. 要素情報にアクセスする

要素の属性を取得する

            .get_attribute('クラス')

要素テキストを取得する

            。文章

タグ名を取得する

            。タグ名


from selenium import webdriver

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)


url = 'http://www.baidu.com'
browser.get(url)


input = browser.find_element_by_id('su')

# 获取标签的属性
print(input.get_attribute('class'))
# 获取标签的名字
print(input.tag_name)

# 获取元素文本
a = browser.find_element_by_link_text('新闻')
print(a.text)

7. インタラクション

  • クリック: クリック()
  • 入力: send_keys()
  • 戻る操作: browser.back()
  • 転送操作: browser.forword()
  • JS スクロールをシミュレートします。

                js='document.documentElement.scrollTop=100000'

                browser.execute_script(js) JSコードを実行する

  • Web ページのコードを取得: page_source
  • 終了:browser.quit() 

例: Baidu は周杰倫を自動的に検索し、ページをめくるなどします。 



from selenium import webdriver

# 创建浏览器对象
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

# url
url = 'https://www.baidu.com'
browser.get(url)

import time
time.sleep(2)

# 获取文本框的对象
input = browser.find_element_by_id('kw')

# 在文本框中输入周杰伦
input.send_keys('周杰伦')

time.sleep(2)

# 获取百度一下的按钮
button = browser.find_element_by_id('su')

# 点击按钮
button.click()

time.sleep(2)

# 滑到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)

time.sleep(2)

# 获取下一页的按钮
next = browser.find_element_by_xpath('//a[@class="n"]')

# 点击下一页
next.click()

time.sleep(2)

# 回到上一页
browser.back()

time.sleep(2)

# 回去
browser.forward()

time.sleep(3)

# 退出
browser.quit()

 

おすすめ

転載: blog.csdn.net/laosao_66/article/details/131780640