研究了半天的无头浏览器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')