selenium
11695 ワード
1.1 seleniumとは?
seleniumは実際のブラウザ、自動化テストツールを模擬できます.複数のブラウザをサポートします.爬虫類の中では主にJavaScriptレンダリング問題を解決し、アカウントのパスワードを通じてcookiesを取得します.(各大網駅登録の検証コードのアップグレード、特に12306に基づいて).
1.2 centos 7デスクトップ環境配置なし
フォックスブラウザをインストールする
seleniumを取り付ける
1.3最新のchromedriverのインストール
phantomjsはだんだん私達の実現をフェードアウトして、もう支持されなくなりました.chrome集は高合併の長所があります.
chromeをインストール
実際に採用した書き方は成功しました.
1.3 seleniumの基本使用
ブラウザのオブジェクトを宣言
取得した要素に対してインタラクティブ方法を呼び出す
多くのページにはFrameタグが付いていますので、データを取る時はframeに切り込むことと切った問題があります.下記の例を通じてここでよく使われているのがswitch_です.to.from()とswitch_to.parent_frame()
転載先:https://www.cnblogs.com/zenan/p/8522261.html
seleniumは実際のブラウザ、自動化テストツールを模擬できます.複数のブラウザをサポートします.爬虫類の中では主にJavaScriptレンダリング問題を解決し、アカウントのパスワードを通じてcookiesを取得します.(各大網駅登録の検証コードのアップグレード、特に12306に基づいて).
1.2 centos 7デスクトップ環境配置なし
フォックスブラウザをインストールする
$ yum install firefox
seleniumを取り付ける
$ pip3 install selenium
Firefoxdriverをインストールする$ wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
$ tar -zxvf geckodriver-*.tar.gz
$ ln -s /root/geckodriver /usr/bin/geckodriver
#
https://github.com/mozilla/geckodriver/releases
起動プログラムテストfrom selenium import webdriver
options = webdriver.FirefoxOptions()
options.add_argument('-headless')
b = webdriver.Firefox(firefox_options=options)
b.get('http://www.baidu.com')
print(b.page_source)
b.quit()
1.3最新のchromedriverのインストール
phantomjsはだんだん私達の実現をフェードアウトして、もう支持されなくなりました.chrome集は高合併の長所があります.
chromeをインストール
$ curl https://intoli.com/install-google-chrome.sh | bash
ダウンロードしたchromeバージョンを確認して、コマンドギルドに表示されます.そしてchromeバージョンから対応するchromedriverを選択します.google-chrome-stable.x86_64 0:73.0.3683.103-1
テスト$ google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.suning.com/ # 。
最新バージョンのchromedriverをダウンロードします.https://sites.google.com/a/chromium.org/chromedriver/downloads
#
$ unzip chromedriver_linux64.zip
#
$ ./chromedriver
#
実際に採用した書き方は成功しました.
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
# ip
chrome_options.add_argument("--proxy-server=http://202.20.16.82:10152")
# headless
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
# bug
chrome_options.add_argument('--disable-gpu')
#
chrome_options.add_argument('blink-settings=imagesEnabled=false')
#
chrome_options.add_argument("user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'")
wd = webdriver.Chrome(chrome_options=chrome_options,executable_path='/home/chrome/chromedriver')
wd.get("https://www.163.com")
content = wd.page_source.encode('utf-8')
print(content)
wd.quit()
1.3 seleniumの基本使用
ブラウザのオブジェクトを宣言
1 from selenium import webdriver
2
3 browser = webdriver.Chrome()
4 browser = webdriver.Firefox()
ページにアクセス1 from selenium import webdriver
2
3 browser = webdriver.Chrome(executable_path="D:\SeleniumDemo-master\chromedriver.exe")
4
5 browser.get("http://www.baidu.com")
6 print(browser.page_source)
7 browser.quit() # quit ,close
単一要素を検索 1 from selenium import webdriver
2
3 browser = webdriver.Chrome()
4
5 browser.get("http://www.taobao.com")
6 input_first = browser.find_element_by_id("q")
7 input_second = browser.find_element_by_css_selector("#q")
8 input_third = browser.find_element_by_xpath('//*[@id="q"]')
9 print(input_first)
10 print(input_second)
11 print(input_third)
12 browser.close()
複数の要素を検索1 from selenium import webdriver
2
3
4 browser = webdriver.Chrome()
5 browser.get("http://www.taobao.com")
6 lis = browser.find_elements_by_css_selector('.service-bd li')
7 print(lis)
8 browser.close()
要素のインタラクティブ操作取得した要素に対してインタラクティブ方法を呼び出す
1 from selenium import webdriver
2
3 import time
4
5 browser = webdriver.Chrome()
6 browser.get("http://www.taobao.com")
7 input_str = browser.find_element_by_id('q')
8 input_str.send_keys("ipad")
9 time.sleep(1)
10 input_str.clear()
11 input_str.send_keys("MakBook pro")
12 button = browser.find_element_by_class_name('btn-search')
13 button.click()
Frame多くのページにはFrameタグが付いていますので、データを取る時はframeに切り込むことと切った問題があります.下記の例を通じてここでよく使われているのがswitch_です.to.from()とswitch_to.parent_frame()
1 import time
2 from selenium import webdriver
3 from selenium.common.exceptions import NoSuchElementException
4
5 browser = webdriver.Chrome()
6 url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
7 browser.get(url)
8 browser.switch_to.frame('iframeResult')
9 source = browser.find_element_by_css_selector('#draggable')
10 print(source)
11 try:
12 logo = browser.find_element_by_class_name('logo')
13 except NoSuchElementException:
14 print('NO LOGO')
15 browser.switch_to.parent_frame()
16 logo = browser.find_element_by_class_name('logo')
17 print(logo)
18 print(logo.text)
転載先:https://www.cnblogs.com/zenan/p/8522261.html