selenium 瀏覽器自動化2 - 同時調用selenium2與selenium3

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

Selenium2

使用技巧:

  1. firefox 不須透過webdriver。
  2. 默認支持全屏幕截圖。

如何調用

  1. 建立虛擬環境 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 使用者設定檔

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

# 滾動窗口 加載所有圖片
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")

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


# 儲存 指定元素截圖
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)

# 關閉瀏覽器
browser.quit()

截出一整張的長截圖。

image

selenium3

使用技巧:

  1. 支持最新版瀏覽器。
  2. 需使用webdriver驅動。

如何調用

  1. 建立虛擬環境 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()  # 調用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") # 搜尋所有標題

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

browser.quit()  # 離開瀏覽器

# 輸出:
['Welcome to Python.org', 'Python教程- 廖雪峰的官方网站', 'Python - 维基百科,自由的百科全书', 'Python 简介| 菜鸟教程', '教程一览| 莫烦Python', 'Python For Loops - W3Schools', 'Python Tutorial - W3Schools', 'Python - Attorneys at law – Geneva Switzerland Tokyo Brussels', 'Python Functions | DataCamp', '用Python 理財:打造小資族選股策略- Hahow 好學校']

小結:

操作上Chrome快速很多,而firefox雖然啟動比較慢,但不用webdriver及全屏截圖,實在相當便利。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容