环境:

  我使用的fedora19.1-xfce版本,属于redhat系的桌面环境。

1.安装

  webkit源码安装webkit失败,这里提供的是yum安装方式。

  a.查看当前yum库中的webkit资源:

    

[root@localhost pythontest]# yum list webkit*
已加载插件:langpacks
已安装的软件包
webkit-sharp.x86_64 0.3-.fc19 @fedora
webkit-sharp-devel.x86_64 0.3-.fc19 @fedora
webkitgtk.x86_64 2.0.-.fc19 @updates
webkitgtk-devel.x86_64 2.0.-.fc19 @updates
webkitgtk-doc.noarch 2.0.-.fc19 @updates
webkitgtk3.x86_64 2.0.-.fc19 @updates
webkitgtk3-devel.x86_64 2.0.-.fc19 @updates
webkitgtk3-doc.noarch 2.0.-.fc19 @updates
可安装的软件包
webkit-sharp-devel.i686 0.3-.fc19 fedora
webkitgtk.i686 2.0.-.fc19 updates
webkitgtk-devel.i686 2.0.-.fc19 updates
webkitgtk3.i686 2.0.-.fc19 updates
webkitgtk3-devel.i686 2.0.-.fc19 updates
[root@localhost pythontest]#

这里展现的是我当前系统已经安装了的很没有安装的与webkit有关的库,当然安装了的也是我我在写这篇博客前安转webkit的结果,如果你的系统不是64位的,请选择那些i684的包

安装库:

yum install webkitgtk.x86_64 webkit-sharp.x86_64  webkit-sharp-devel.x86_64 webkitgtk.x86_64  webkitgtk-devel.x86_64

  这里安装完成后导入了webkit的动态连接库。可以使用具体的某门语言来调他们的接口实现功能。这里使用的是python

需要有3个支持库:

import gtk
import webkit
import jswebkit

 webkit库使用的源码安装,jswebkit使用的rpm安装

webkit库:

https://code.google.com/p/pywebkitgtk/downloads/list

执行:

./configure
make
make install

在上面的./configure过程中可能提示某些库不存在,比如

  No package 'pygtk-2.0' found

执行:  

yum install gtk2.x86_64 gtk2-devel.x86_64  gtk2-engines.x86_64 gtk2-engines-devel.x86_64 gtk2-immodule-xim.x86_64

./configure执行成功后,在执行make && make install,

然后查看webkit库是否安装成功:

[root@localhost pythontest]# python
Python 2.7.5 (default, Nov 12 2013, 16:18:42)
[GCC 4.8.2 20131017 (Red Hat 4.8.2-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import webkit
>>> dir(webkit)
['DOWNLOAD_ERROR_CANCELLED_BY_USER', 'DOWNLOAD_ERROR_DESTINATION', 'DOWNLOAD_ERROR_NETWORK', 'DOWNLOAD_STATUS_CANCELLED', 'DOWNLOAD_STATUS_CREATED', 'DOWNLOAD_STATUS_ERROR', 'DOWNLOAD_STATUS_FINISHED', 'DOWNLOAD_STATUS_STARTED', 'Download', 'DownloadError', 'DownloadStatus', 'EDITING_BEHAVIOR_MAC', 'EDITING_BEHAVIOR_UNIX', 'EDITING_BEHAVIOR_WINDOWS', 'EditingBehavior', 'LOAD_COMMITTED', 'LOAD_FAILED', 'LOAD_FINISHED', 'LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT', 'LOAD_PROVISIONAL', 'LoadStatus', 'NAVIGATION_RESPONSE_ACCEPT', 'NAVIGATION_RESPONSE_DOWNLOAD', 'NAVIGATION_RESPONSE_IGNORE', 'NETWORK_ERROR_CANCELLED', 'NETWORK_ERROR_FAILED', 'NETWORK_ERROR_FILE_DOES_NOT_EXIST', 'NETWORK_ERROR_TRANSPORT', 'NETWORK_ERROR_UNKNOWN_PROTOCOL', 'NavigationResponse', 'NetworkError', 'NetworkRequest', 'NetworkResponse', 'PLUGIN_ERROR_CANNOT_FIND_PLUGIN', 'PLUGIN_ERROR_CANNOT_LOAD_PLUGIN', 'PLUGIN_ERROR_CONNECTION_CANCELLED', 'PLUGIN_ERROR_FAILED', 'PLUGIN_ERROR_JAVA_UNAVAILABLE', 'PLUGIN_ERROR_WILL_HANDLE_LOAD', 'POLICY_ERROR_CANNOT_SHOW_MIME_TYPE', 'POLICY_ERROR_CANNOT_SHOW_URL', 'POLICY_ERROR_CANNOT_USE_RESTRICTED_PORT', 'POLICY_ERROR_FAILED', 'POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE', 'PluginError', 'PolicyError', 'SecurityOrigin', 'WEB_NAVIGATION_REASON_BACK_FORWARD', 'WEB_NAVIGATION_REASON_FORM_RESUBMITTED', 'WEB_NAVIGATION_REASON_FORM_SUBMITTED', 'WEB_NAVIGATION_REASON_LINK_CLICKED', 'WEB_NAVIGATION_REASON_OTHER', 'WEB_NAVIGATION_REASON_RELOAD', 'WEB_VIEW_TARGET_INFO_HTML', 'WEB_VIEW_TARGET_INFO_IMAGE', 'WEB_VIEW_TARGET_INFO_NETSCAPE_URL', 'WEB_VIEW_TARGET_INFO_TEXT', 'WEB_VIEW_TARGET_INFO_URI_LIST', 'WebBackForwardList', 'WebDataSource', 'WebDatabase', 'WebFrame', 'WebHistoryItem', 'WebInspector', 'WebNavigationAction', 'WebNavigationReason', 'WebPolicyDecision', 'WebResource', 'WebSettings', 'WebView', 'WebViewTargetInfo', 'WindowFeatures', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'get_default_web_database_quota', 'get_web_database_directory_path', 'gobject', 'remove_all_web_databases', 'set_default_web_database_quota', 'set_web_database_directory_path', 'webkit']
>>>

这里可以看到webkit库的各个属性都出来了,说明他安装成功了。但是可能你出错了,因为按照默认的python的webkit库的安装路径会在:

/usr/local/lib64/python2.7/site-packages/webkit

 这不是系统当前默认查找的库路径,需要设置PYTHONPATH

expoort $PYTHONPATH='/usr/local/lib64/python2.7/site-packages/'

然后才能正常使用。

接下来安装jswebkit.

jswebkit是一个rpm,非常好安装,下载路径:

http://rpm.pbone.net/index.php3/stat/4/idpl/23804518/dir/fedora_19/com/python-jswebkit-0.0.3-5.1.x86_64.rpm.html

这里我提供

下载后直接使用:

rpm -ivh python-jswebkit-0.0.3-5.1.x86_64.rpm

  安装后同前面的webkit库一样检查是否安装成功。

经过上面的步骤,webkit和他的python支持安装完成。

2. 测试:

a:(文件名cc.py)

import gtk
import webkit view = webkit.WebView()
sw = gtk.ScrolledWindow()
sw.add(view) win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.add(sw)
win.show_all()
view.open("http://w3.org/")
gtk.main()

结果会打开一个简易窗口.

但是并没有达到我们作为爬虫要解析JS的目的:

b:(文件名dd.py)

import sys
import gtk
import webkit
import jswebkit def get(url):
webview = webkit.WebView()
webview.connect( 'load-finished', lambda v,f: gtk.main_quit() )
webview.load_uri(url)
gtk.main()
js = jswebkit.JSContext( webview.get_main_frame().get_global_context() )
renderedBody = str( js.EvaluateScript( 'document.body.innerHTML' ) )
print renderedBody
with open("temp", "wb") as f:
f.write(renderedBody) if __name__ == "__main__":
url = sys.argv[]
get(url)

这端代码我们可以测试出现在的爬虫是否能解析JS:

使用wget http://www.taobao.com/

得到文件index.html

使用python dd.py http://www.taobao.com/

执行后结果:

[root@localhost pythontest]# ll
总用量
-rw-r--r--. root root 12月 : cc.py
-rw-r--r--. root root 12月 : dd.py
-rw-r--r--. root root 12月 : dd.py~
-rw-r--r--. root root 12月 : index.html
-rw-r--r--. root root 43492 12月 : temp

可以看到,wget获得的淘宝文件为36934,而使用webkit下载的淘宝首页43492,大小不一直,使用浏览器打开index.html,可以看到有的地方一直处于加载状态,而temp文件没有这种情况,所以,当前这个webkit爬虫是解析js获得的内容.

fedora环境安装webkit支持作爬虫下载解析JS的更多相关文章

  1. Mac环境安装非APP STORE中下载的软件,运行报错:“XXX” is damaged and can’t be opened. You should move it to the Trash. 解决办法

    出现这个错误的大多数原因都是因为系统设置的问题,因为系统不信任你从其他地方下载的软件安装包,所以运行时就给你阻止了.具体的设置步骤如下: 1. 打开系统偏好设置 (System Preferences ...

  2. Appium 介绍及环境安装

    Appium是一个可用于测试iOS. Android操作系统和Windows桌面平台原生应用,移动网页应用和混合应用的自动化测试框架. 原生应用(Native App):用 android.iOS或者 ...

  3. Redis:在windows环境安装Redis

    Redis:在windows环境安装Redis 第一步: 下载windows版本的Redis:https://github.com/MSOpenTech/Redis. 第二步: 在命令行执行:D:\r ...

  4. 【Go】 Go 语言环境安装

    安装环境/工具 1.Linux(CentOS 7.4版) 2.go1.11.2.linux-amd64.tar Go 语言环境安装 1.下载安装包 安装包下载地址为:https://golang.or ...

  5. python3爬虫_环境安装

    一.环境安装 1.python3安装 官网:https://www.python.org/downloads/ 64 位系统可以下载 Windows x86-64 executable install ...

  6. Python爬虫入门CentOS环境安装

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:梦想橡皮擦 CentOS环境安装-简介你好,当你打开这个文档的时候,我知 ...

  7. 在 CentOS/Fedora 下安装 JAVA 环境

    介绍 本文介绍如何在 CentOS 7(6/6.5). Fedora.RHEL 上安装 Java.Java是一个流行的软件平台,允许您运行Java应用程序. 本文涵盖了以下Java版本的安装: Ope ...

  8. centos6.2安装桌面环境 与中文支持

    yum groupinstall "X Window System" //安装Xorgyum groupinstall "Desktop" //安装GNOMEy ...

  9. 【XPath Helper:chrome爬虫网页解析工具 Chrome插件】XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插件网

    [XPath Helper:chrome爬虫网页解析工具 Chrome插件]XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插 ...

随机推荐

  1. LoadingView 自定义加载图片

    #import <UIKit/UIKit.h> @interface LoadingView : UIView @property (nonatomic,strong) NSMutable ...

  2. iOS NSURLSession 下载

    周五的时候,有个新的需求,要下载脚本,帮助玩家自动打怪,应该也是挂机的意思吧! 组长让我设计界面,让汤老师设计数据等.我觉得数据的挑战性更大一点,然后就接过来了. 自己还没有形成互联网思维,所以弄了一 ...

  3. Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number. An example is the root-to-leaf path1->2->3which represents the number123. Find the total sum of a

    class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class ...

  4. CXF入门例子

    1. WebService实现类:@WebService注解表示这个类发布为一个WebService服务. package com.coshaho.learn.cxf; import javax.jw ...

  5. http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315436.html

    http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315436.html

  6. 面试&笔试常见题,你了解多少?

    HTML:1.  什么是语义化的HTML?有何意义?为什么要做到语义化?(高频率考题)2.  行内元素和块元素分别有哪些?(高频率)3.  严格模式与混杂模式的区分?如何触发这两种模式?(高频率)4. ...

  7. saltstack之(二)软件包下载安装

    由于salt组件的安装依赖较多,最好使用yum源安装(不建议使用源码安装).由于试验环境限制,不能使用网络,故增加了实验的难度.下面分可以访问internet和不可以访问internet两方面介绍sa ...

  8. Mysql---DML 语句与DCL语句

    DML 语句: DML 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert).更新(update).删除(delete)和查(select),是开发人员日常使用最频繁的操作.下面将依次 ...

  9. RFS_点击button按钮之后,RFS出现卡死的问题

    [html代码] <html> <head> <title> 主窗口 </title> </head> <body> <d ...

  10. [ROS]1 小乌龟

    对于一个新新新手,Linux,ROS都要学习.安装ROS真的很讨厌了,于是采用易科机器人实验室的ubuntu12.04-amd64-ros-exbot-h2-140520版本. 测试一下小乌龟节点.主 ...