selenium 瀏覽器自動(dòng)化2 - 同時(shí)調(diào)用selenium2與selenium3

虛擬還境可將python的模塊依賴分開管理,能使用指定版本或避免衝突問(wèn)題坊夫。

Selenium2

使用技巧:

  1. firefox 不須透過(guò)webdriver。
  2. 默認(rèn)支持全屏幕截圖。

如何調(diào)用

  1. 建立虛擬環(huán)境 Selenium2 VEnv

    安裝指定版本

    pip install selenium==2.53.2
    
  2. 下載免安裝的firefox46.01

FirefoxPortable 46 下載地址

使用腳本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-05-16 08:33:47
# @Author  : Maliao
# @Link    : None

from selenium import webdriver
from PIL import Image
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from time import sleep

binary = FirefoxBinary(r".\FirefoxPortable\FirefoxPortable.exe") # firefox 主程序 檔案
profile = FirefoxProfile(r'.\FirefoxPortable\Data\profile') # firefox 使用者設(shè)定檔

browser = webdriver.Firefox(firefox_binary=binary, firefox_profile=profile)
browser.set_window_size(800, 900) # 指定窗口大小


# 依照元素大小截圖
def crop_screenshot(fullfile, cropfile, element):
    browser.save_screenshot(fullfile)
    if element:
        type = element["type"]
        name = element["name"]

        imgelement = browser.find_element_by_xpath(".//*[@%s=%r]" % (type, name))
        location = imgelement.location
        size = imgelement.size
        rangle = (int(location['x']), int(location['y']), int(
            location['x'] + size['width']), int(location['y'] + size['height']))

        i = Image.open(fullfile)
        fincrop = i.crop(rangle)
        fincrop.save(cropfile)
    else:
        pass

# 滾動(dòng)窗口 加載所有圖片
def js_scroll_down(text):
    jsdown = '''
    (function () {
                var y = 0;
                var step = 100;
                window.scroll(0, 0);

                function f() {
                    if (y < document.body.scrollHeight) {
                        y += step;
                        window.scroll(0, y);
                        setTimeout(f, 100);
                    } else {
                        window.scroll(0, 0);
                        document.title += "%s";
                    }
                }

                setTimeout(f, 1000);
            })();
    ''' % text

    browser.execute_script(jsdown)


browser.get("https://www.ithome.com/html/android/360003.htm")

# 調(diào)用JS 下拉加載所有圖片
text = "SD"
js_scroll_down(text)
changetitle = "%s%s" % (browser.title, text)
while 1:  # 死循環(huán) 等待js跑完
    nowtitle = browser.title
    if changetitle in nowtitle:
        break
    else:
        sleep(1)


# 儲(chǔ)存 指定元素截圖
element = {"type": "class", "name": "post_content"}
cropfile = r"./data/ithome%s.png" % browser.current_url.split("/")[-1].split(".")[0]
fullfile = r"./data/ithomeCN.png"
crop_screenshot(fullfile=fullfile, cropfile=cropfile, element=element)

# 關(guān)閉瀏覽器
browser.quit()

截出一整張的長(zhǎng)截圖廉丽。

image

selenium3

使用技巧:

  1. 支持最新版瀏覽器。
  2. 需使用webdriver驅(qū)動(dòng)妻味。

如何調(diào)用

  1. 建立虛擬環(huán)境 Selenium3 VEnv

    安裝最新版本

    pip install selenium
    
  2. 下載Chrome

  3. 下載Chome Driver

使用腳本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-05-16 08:33:47
# @Author  : Maliao
# @Link    : None


from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Chrome()  # 調(diào)用webdriver

browser.get("http://www.google.com")

browser.find_element_by_id("lst-ib").send_keys("python")  # 搜索框輸入:"python"

browser.find_element_by_name("btnK").send_keys(Keys.ENTER)  # 提交搜尋

titles = browser.find_elements_by_xpath(".//h3[@class='r']//a") # 搜尋所有標(biāo)題

print([i.text for i in titles]) # 打印所有標(biāo)題

browser.quit()  # 離開瀏覽器

# 輸出:
['Welcome to Python.org', 'Python教程- 廖雪峰的官方網(wǎng)站', 'Python - 維基百科正压,自由的百科全書', 'Python 簡(jiǎn)介| 菜鳥教程', '教程一覽| 莫煩Python', 'Python For Loops - W3Schools', 'Python Tutorial - W3Schools', 'Python - Attorneys at law – Geneva Switzerland Tokyo Brussels', 'Python Functions | DataCamp', '用Python 理財(cái):打造小資族選股策略- Hahow 好學(xué)校']

小結(jié):

操作上Chrome快速很多,而firefox雖然啟動(dòng)比較慢责球,但不用webdriver及全屏截圖焦履,實(shí)在相當(dāng)便利。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雏逾,一起剝皮案震驚了整個(gè)濱河市嘉裤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栖博,老刑警劉巖屑宠,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異仇让,居然都是意外死亡典奉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門丧叽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卫玖,“玉大人,你說(shuō)我怎么就攤上這事踊淳〖偎玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)笨触。 經(jīng)常有香客問(wèn)我懦傍,道長(zhǎng),這世上最難降的妖魔是什么芦劣? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任粗俱,我火速辦了婚禮,結(jié)果婚禮上虚吟,老公的妹妹穿的比我還像新娘寸认。我一直安慰自己,他們只是感情好串慰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布偏塞。 她就那樣靜靜地躺著,像睡著了一般邦鲫。 火紅的嫁衣襯著肌膚如雪灸叼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天庆捺,我揣著相機(jī)與錄音古今,去河邊找鬼。 笑死滔以,一個(gè)胖子當(dāng)著我的面吹牛捉腥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播你画,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼抵碟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了坏匪?” 一聲冷哼從身側(cè)響起拟逮,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剥槐,沒(méi)想到半個(gè)月后唱歧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粒竖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年颅崩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕊苗。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沿后,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朽砰,到底是詐尸還是另有隱情尖滚,我是刑警寧澤喉刘,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站漆弄,受9級(jí)特大地震影響睦裳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撼唾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一廉邑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧倒谷,春花似錦蛛蒙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至抖格,卻和暖如春诺苹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雹拄。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工筝尾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人办桨。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像站辉,于是被迫代替她去往敵國(guó)和親呢撞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容