我们在windows平台上写一些WEB机器人程序的时候,通常有三种方法。
1.webbrowser
一种是使用webbrowser控件加载网页,用MSHTML来操控整个网页,进行模拟填表、提交、点击、采集数据。这种方式开发起来比较简单。但由于需要加载整个页面,缺点是速度慢、效率不高,内存占用大,难以做成多线程并发。
2.Winhttp
一种是直接基于HTTP协议来做,分析出每一个填表、提交、点击的背后,都进行了什么GET/POST动作,使用Winet或Winhttp进行模拟相应的GET/POST动作即可。这种方法速度快、效率高、内存占用小、容易做成多线程并发。缺点是开发难度大,需要我们一点一点的分析。有时候还需要读懂他的JS代码,并用自己的软件开发语言写出来。比如有的网站注册账号的时候,你抓包就会发现密码是一段密文,但他用的是HTTP并不是HTTPS。你就得读懂他的JS代码是怎么把密码加密成那段密文的,然后自己把那个加密算法写出来。目标网站越复杂,各种框架嵌套,你就会发现分析起来很难。并且有时候我们需要自己手动管理Cookie、请求头和响应头。
3.WebKit
还有一种是在第三方开源WEB浏览器内核上开发(如WebKit)。这种方式比较灵活,可以根据自己的具体需求进行精简和添加功能。但这种方式对程序员要求比较高。需要掌握很多基础知识,需要了解、读懂浏览器内核框架,需要看大量英文文档。不要指望国内有全中文的WebKit开发手册。
4.webbrowser+Winhttp
其实我们可以吧webbrowser与Winhttp结合起来进行开发。需要进行复杂操作的部分,用webbrowser完成,简单的提交和获取数据,使用Winhttp进行GET/POST来完成。比如,弹出webbrowser窗口,让用户输入账号密码验证码进行登录,这样就获取了Cookie。然后隐藏webbrowser窗口,程序在后台使用Winhttp多线程并发提交、获取数据。
wordpress的默认搜索是采用mysql的like,但是当我们整个网站的数据非常大的时候,mysql的like的效率将会非常慢,而且wordpress本身的性能也是比较低的,而且mysql like的准确率也不高,前一段时间本站使用了wordpress整合Google自定义搜索但是发现Google经常被墙,很不爽,决定改之。今天wordpress教程网跟大家分享下如何在wordpress中使用高效的全文索引组件coreseek。Coreseek开源中文检索引擎,可以说是Sphinx中文版,因为coreseek加入了中文分词库,大家可以到官网去查看具体介绍:http://www.coreseek.cn/。如果你的wordpress系统搜索要采用coreseek,首先你得拥有自己的服务器(VPS),如果你只是ftp空间那是没有办法的。本站已成功部署,你可以在本站搜索中查看实例。下面就让我们一步步来部署吧。
安装coreseekcoreseek的安装建议直接查看官网的安装方法,如果linux系统可以直接查看:http://www.coreseek.cn/products-install/install_on_bsd_linux/,其他系统可以查看:http://www.coreseek.cn/products-install/#doc_cn,本站给出我的配置文件etc/csft.conf,配置信息如下:
#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/ #配置来着wordpress教程网(http://www.54ux.com) #请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库 #源定义 source mysql { type = mysql #mysql数据配置 sql_host = localhost sql_user = root #mysql用户名 sql_pass = #mysql密码 sql_db = wpux sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query = SELECT ID, UNIX_TIMESTAMP(post_date) AS date_added, post_content, post_title FROM wp_posts #对wp_posts表建立全文索引 #sql_query第一列id需为整数 #post_title,post_content两个字段被全文索引 #sql_attr_uint = ID #从SQL读取到的值必须为整数 sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性 sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集 sql_query_info = SELECT * FROM wp_posts WHERE ID=$ID #命令行查询时,从数据库读取原始数据信息 } #index定义 index mysql { source = mysql #对应的source名称 path = var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/... docinfo = extern mlock = 0 morphology = none min_word_len = 1 html_strip =
本体的作用是描述概念与概念之间的关系。它给出了构成相关领域词汇的基本术语和关系,以及利用这些术语和关系构成的规定这些词汇外延的规则的定义。
利用本体,我们可以统一管理所有的数据,使得数据规范化、并能利用本体进行一定程度的推理,提高自动问答技术的性能。
为了对图书馆的文献资源进行语义化描述,需要构建本体。我们基于DC和DCTERMS元数据标准, 构建了一个元数据本体。
此外,文献资源的描述还涉及到其他信息, 譬如作者名、出版机构名、主题词,分类号等,因为上述资源目前已有成熟的本体用于描述,我们直接对其进行复用或者进行必要的扩展。 采用的本体: FOAF: 描述个人/作者机构;SKOS: 描述受控词表;GeoNames: 描述地名;Event: 描述会议事件。
下面给出自定义本体的结构图:
本项目所涉及的数据主要包括图书馆的书目数据,受控词表数据,个人/组织机构数据和地名数据。 其中,图书的书目数据来自南京大学图书馆的MARC书目数据,期刊论文,会议论文和学位论文的书目数据来自CNKI网站,作者信息来自南京大学信息管理学院官方网站中教师的个人网页。
原始数据为HTML文档,基于构建的元数据本体及相关本体(FOAF本体,EVENT本体,SKOS模型),将上述数据转换为RDF/XML格式。
下面给出一个RDF数据的例子。