当前位置:首页 > 后端开发 > Python3.x:Selenium+PhantomJS爬取带Ajax、Js的网页及获取JS返回值

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

7个月前 (05-26)38

前言 

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

解决方案

  使用Selenium+PhantomJS。这两个组合在一起,可以运行非常强大的爬虫,可以处理cookie,JavaScript,header以及其他你想做的任何事情。 

安装第三方库

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

  Selenium安装命令:

  pip install selenium

安装PhantomJS

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

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

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

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

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

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

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

对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)

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

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

示例一:

  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()

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

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

获取JS返回值

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

 

作者:尘世风
来源链接:https://www.cnblogs.com/feng0815/p/8735491.html

标签: Python

“Python3.x:Selenium+PhantomJS爬取带Ajax、Js的网页及获取JS返回值” 的相关文章

python2.x中raw

    搬砖的时候突然发现运行raw_input()函数一直报错 Traceback (most recent call last):  ...

python3.x安装第三方库的解决办法

Ubuntu14下面python2.7与python3.4都存在,并且系统已经自动为puthon3.4建立了python3的链接。   Python(P...

python3-环境篇-03-pycharm创建python工程之hello word

python3-环境篇-03-pycharm创建python工程之hello word

  以下仅供参考 1.打开pycharm,点击 【New Project】 修改【location】,选择【Base Interpreter】 ...

python环境精简版

这篇文章来源于我们的公众号Techdemic,我们目前的原创文章都发布在公众号,近期有时间会慢慢把文章迁到知乎。Python专题将会继续更新,从微信的浏览量来看,似...

python中的str.replace()函数

python中的str.replace()函数

python中字符串的元素替换函数,一般来说使用方法为 str.replace(old, new[, max]) 例如 s =...

Python_环境部署及报错汇总(0)

Python_环境部署及报错汇总(0)

一、安装Anaconda Anaconda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。 Anaconda包括C...

你不得不了解的Python3.x新特性

你不得不了解的Python3.x新特性

  从 3.0 到 3.8,Python 3 已经更新了一波又一波,但似乎我们用起来和 2.7 没有太大区别?以前该怎么写 2.7 的代码现在就怎么写,只不过少数表达方式变了而已。在这篇...

Python安装pip

Python安装pip

进入到Python的安装目录下的Scripts下(D:\Python34\Scripts)有个easy_install.exe文件,拉到cmd命令窗口,空格pip,回车就可以安装pip了...

MobaXterm配置服务器python虚拟环境

MobaXterm配置服务器python虚拟环境 服务器是Linux系统,使用MobaXterm终端模拟器,服务器中已经够配置好了anconda3,...

python环境变量及pip3的配置

python环境变量及pip3的配置

首先下载python: https://www.python.org/downloads/选择合适的版本进行下载并安装,安装时应该有选择是否配置环境变量的选项,...