本文共 1980 字,大约阅读时间需要 6 分钟。
研究了半天的无头浏览器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 webdriverdriver = 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 timefrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysdriver = 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 webdriverfrom selenium.webdriver.firefox.firefox_profile import FirefoxProfiledef 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 driverdriver = disableImages()driver.get('http://www.baidu.com')
转载地址:http://rktni.baihongyu.com/