爬虫抓取数据时有些数据是动态数据,例如是用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")
更多的教程:你们来编程