Python3.x:Selenium+PhantomJS爬取带Ajax、Js的网页及获取JS返回值

前言 

  如今不少网站的都大量使用JavaScript,或者使用了Ajax技术。这样在网页加载完成后,url虽然不改变可是网页的DOM元素内容却能够动态的变化。若是处理这种网页是还用requests库或者python自带的urllib库那么获得的网页内容和网页在浏览器中显示的内容是不一致的。html

解决方案

  使用Selenium+PhantomJS。这两个组合在一块儿,能够运行很是强大的爬虫,能够处理cookie,JavaScript,header以及其余你想作的任何事情。 java

安装第三方库

  Selenium是一个强大的网络数据采集工具,最初是为网站自动化测试开发的,其有对应的Python库;python

  Selenium安装命令:web

  pip install selenium

安装PhantomJS

  PhantomJS是一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操做须要程序设计实现。经过编写js程序能够直接与webkit内核交互,在此之上能够结合java语言等,经过java调用js等相关操做。须要去官网下载对应平台的压缩文件;macos

PhantomJS(phantomjs-2.1.1-windows)下载地址:http://phantomjs.org/download.html,按照不一样的系统选择相应的版本windows

对windows系统来讲,下载PhantomJs 而后将 解压后的执行文件放在被设置过环境变量的地方,不设置的话,后续代码就要设, 因此这里直接放进来方便;浏览器

而后检测下,在cmd窗口输入phantomjs:cookie

出现这样的画面,即表示成功;网络

对Mac系统来讲,下载后保存到一个路径中,能够直接保存在环境变了路径中,也能够在环境变量路径中建立一个指向phantomjs的软链接工具

ln -s /usr/local/opt/my/phantomjs-2.1.1-macosx/bin/phantomjs  /usr/local/bin

测试代码:

from selenium import webdriver driver = webdriver.PhantomJS() driver.get('http://www.baidu.com/') print (driver.page_source)

能成功获取到页面元素即为安装成功

 

示例一:

  Selenium+PhantomJS示例代码:

from selenium import webdriver driver = webdriver.PhantomJS() driver.get('http://www.cnblogs.com/feng0815/p/8735491.html') #获取网页源码
data = driver.page_source print(data) #获取元素的html源码
tableData = driver.find_elements_by_tag_name('tableData').get_attribute('innerHTML') #获取元素的id值
tableI = driver.find_elements_by_tag_name('tableData').get_attribute('id') #获取元素的文本内容
tableI = driver.find_elements_by_tag_name('tableData').text driver.quit()

  能输出网页源码,说明安装成功

获取JS返回值

相关文章
相关标签/搜索