Python操作Firefox

研究了半天的无头浏览器PhantomJS,不知是兼容问题还是什么问题,有个网页点击翻页的时候会出错(后来发现需要换userAgert),
后来用上了Firefox后,所有问题都解决了(效率问题暂没考虑)。
参考了很多网上的资料,selenium3.0之前的版本,是可以直接打开火狐浏览器的,但3.0之后的版本的就不支持了,要去官网下驱动,地址:https://github.com/mozilla/geckodriver/releases。
驱动要放在和python.exe相同的目录(或者调用的时候加参数executable_path="x:/xx/geckodriver.exe")。我用的window7,Firefox版本59.0.2 (64 位)。首先要安装selenium,用pip就可以。装好后就可以直接用了。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
element = driver.find_element_by_xpath("//input[@id='kw']")
element.send_keys("python")
submit = driver.find_element_by_xpath("//input[@id='su']")
submit.click()


实现个下拉刷新。

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('http://p4psearch.1688.com/p4p114/p4psearch/offer2.htm?keywords=%BC%E6%D6%B0&cosite=baidujj&location=landing_t4&trackid=8856889739776002206166&keywordid=80313881943&format=normal')
time.sleep(1)
while True:
    # 也可以调用js实现下拉刷新
    # js="var q=document.documentElement.scrollTop=200000"
    # driver.execute_script(js)
    start = driver.page_source
    # 按 Ctrl + End
    driver.find_element_by_xpath("html").send_keys(Keys.CONTROL,Keys.END)
    time.sleep(1)
    end = driver.page_source
    if start == end:
        break



为了加快访问速度,可以禁止加载图片,css,flash等。

from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

def disableImages():
    # get the Firefox profile object
    firefoxProfile = FirefoxProfile()
    # Disable CSS
    firefoxProfile.set_preference('permissions.default.stylesheet', 2)
    # Disable images
    firefoxProfile.set_preference('permissions.default.image', 2)
    # Disable Flash
    firefoxProfile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so',
                                  'false')
    # Set the modified profile while creating the browser object 
    driver = webdriver.Firefox(firefoxProfile)
    return driver

driver = disableImages()
driver.get('http://www.baidu.com')


你可能感兴趣的:(python)