爬蟲抓取數據時有些數據是動態數據,例如是用js動態加載的,使用普通的urllib2
抓取數據是找不到相關數據的,這是爬蟲初學者在使用的過程當中,最容易發生的狀況,明明在瀏覽器裏有相應的信息,可是在python抓取的網頁中缺乏了對應的信息,這一般是網頁使用的是js異步加載數據,在動態顯示出來。一種處理方式是找出相應的js接口,可是有時這是很是可貴,由於還的分析js的調用參數,而有些參數是有加密的,還的進行解密操做;另外一種出來方式是python調用瀏覽器,控制瀏覽器返回相應的信息,這也是本文要介紹的selenium
。html
在python下安裝selenium,命令:python
pip install -U selenium
測試是否成功:git
#!/usr/bin/python #coding=utf-8 """ start python 項目 """ from selenium import webdriver browser = webdriver.Firefox() # Get local session of firefox browser.get("http://www.baidu.com") # Load page print browser.page_source
雖然selenium
安裝成功了,可是仍是會報錯:github
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
這是由於:web
使用pip安裝selenium,默認安裝的是最新版本的selenium,使用pip list查了一下個人selenium版本,是3.4.2的,firefox版本,是43.0.1的,selenium 3.x開始,webdriver/firefox/webdriver.py的__init__中,executable_path="geckodriver";而2.x是executable_path="wires"編程
把firefox升級到最新版本api
下載地址:https://github.com/mozilla/geckodriver/releases
,根據本身的電腦,下載的win64位的;瀏覽器
在firefox的安裝目錄下,解壓geckodriver,而後將該路徑添加到path環境變量下。session
selenium
的文檔在 http://selenium-python.readthedocs.io/api.html
下可進行相應的研究。異步
若是對BeautifulSoup
還不瞭解的話,能夠參看這篇文章 http://www.bugingcode.com/python_start/ex12.html
找到了獲得了html後使用 BeautifulSoup能夠進行解析。
from bs4 import BeautifulSoup bs = BeautifulSoup(browser.page_source, "lxml")
更多的教程:你們來編程