第一步:安装与配置
1.电脑上需要有火狐浏览器(默认安装在C:\Program Files (x86)\Mozilla Firefox目录下)。
2.使用pip install selenium安装好之后。
3.在这里https://github.com/mozilla/geckodriver/releases下载一个driver包,根据自己的系统决定下哪个,我下的是geckodriver-v0.11.1-win64.zip
4.把刚下好的包里面的exe文件拷贝到火狐浏览器目录下,然后把火狐浏览器的目录加入系统的环境变量里的PATH。
第二步:启动python,测试selenium
Example 0: open a new Firefox browser load the page at the given URL from selenium import webdriver browser = webdriver.Firefox() browser.get('http://seleniumhq.org/') Example 1: open a new Firefox browser load the Yahoo homepage search for “seleniumhq” close the browser from selenium import webdriver from selenium.webdriver.common.keys import Keys browser = webdriver.Firefox() browser.get('http://www.yahoo.com') assert 'Yahoo' in browser.title elem = browser.find_element_by_name('p') # Find the search box elem.send_keys('seleniumhq' + Keys.RETURN) browser.quit()
更多例子,看官网:https://pypi.python.org/pypi/selenium/2.45.0
PS:最好用的一点是,可以通过browser.page_source来获得网页源码,传进BeautifulSoup里就可以啦~~~~~
PPS:当然,如果想操作chrome同样也是可以的,这时候需要一个chromedriver.exe,这个文件我是从这里下的:http://chromedriver.storage.googleapis.com/index.html?path=2.25/我下的是chromedriver_win32.zip。然后把里面的exe文件放进chrome的安装目录下,然后再把这个目录加入PATH就可以使用了。我的chrome安装目录是C:\Program Files (x86)\Google\Chrome\Application。
测试代码:
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.baidu.com") driver.quit()
PPPS:然后,在使用的时候发现有时候会有页面加载很慢的情况,因为selenium是在页面完全加载完毕才会停止,然而这个在很多时候是没有必要的,这个时候可以自己手动设置超时时间。方法如下:(参考https://my.oschina.net/u/2344787/blog/400507?p={{page}})
from selenium import webdriver
from selenium.common.exceptions import TimeoutException driver = webdriver.Firefox() # 设定页面加载限制时间 driver.set_page_load_timeout(5) driver.maximize_window() try: driver.get('http://www.icourse163.org/') except TimeoutException: driver.execute_script('window.stop()') #当页面加载时间超过设定时间,通过执行Javascript来stop加载,即可执行后续动作
一个例子:抓取中国裁判文书网
from selenium import webdriver from bs4 import BeautifulSoup import time d = webdriver.Chrome() d.get("http://wenshu.court.gov.cn/list/list/?sorttype=1&conditions=searchWord+QWJS+++全文检索:抢劫") time.sleep(5) # 根据网络情况调整sleep时间 d.execute_script(""" var span = document.createElement(\"span\"); span.id = \"myspanspan\"; span.innerHTML = document.getElementById(\"resultList\").innerHTML; var ele = document.body; ele.appendChild(span); """) soup = BeautifulSoup(d.page_source,'html.parser',from_encoding='gb18030') x = soup.find('span',{'id':'myspanspan'}) print(str(x)) d.close()