06
2012
11

快速构建实时抓取集群[searchtb]

定义:
首先,我们定义一下定向抓取,定向抓取是一种特定的抓取需求,目标站点是已知的,站点的页面是已知的。本文的介绍里面,主要是侧重于如何快速构建一个实时的抓取系统,并不包含通用意义上的比如链接分析,站点发现等等特性。

在本文提到的实例系统里面,主要用到 linux+mysql+redis+django+scrapy+webkit,其中scrapy+webkit作为抓取端,redis作为链接库存 储,mysql作为网页信息存储,django作为爬虫管理界面,快速实现分布式抓取系统的原型。

名词解析:

1.  抓取环:抓取环指的是spider在存储中获取url,从互联网上下载网页,然后将网页存储到数据库里面,最后在从存储里面获取下一个URL的一个流程。
2.  Linkbase:链接库的存储模块,包含一般的链接信息;是抓取系统的核心,使用redis存储。
3.  XPATH:一门在 XML 文档中查找信息的语言,XPath 可用来在 XML 文档中对元素和属性进行遍历, 是 W3C XSLT 标准的主要元素。使用XPATH以及相关工具lib进行链接抽取和信息抽取。
4.  XPathOnClick:一个chrome的插件,支持点击页面元素,获取XPATH路径,用于编辑配置模板。
5.  Redis:一个开源的KV的内存数据库,具备很好的数据结构的特征和很高的存取性能。用于存储linkbase信息
6.  Django:爬虫管理工具,用于模板配置,系统监控反馈。Django在这里主要是用来管理一个数据库,使用Admin功能。
7.   Pagebase:页面库,主要是存储网页抓取的结果,以及页面抽取的结果,和dump交互,使用mysql实现。
8.    Scrapy:一个开源的机遇twisted框架的python的单机爬虫,该爬虫实际上包含大多数网页抓取的工具包,用于爬虫下载端以及抽取端。
9.     列表页:指的商品页面之外的所有页面
10.    详情页:比如商品B2C的抓取中,特指商品页面,比如

29
2012
09

安装Tokyo cabinet时提示configure: error: bzlib.h is required的解决方法

wget http://httpsqs.googlecode.com/files/tokyocabinet-1.4.47.tar.gz
tar zxvf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47/
./configure --prefix=/usr/local/tokyocabinet-1.4.47/
#注:在32位Linux操作系统上编译Tokyo cabinet,请使用./configure --enable-off64代替./configure,可以使数据库文件突破2GB的限制。
#./configure --enable-off64 --prefix=/usr/local/tokyocabinet-1.4.47/
make
make install
cd ../

...

12
2012
09

几款网页制作必备的Firefox插件

Firefox是非IE内核浏览器的领头羊,而且近几年使用人群迅速增长,大有追赶IE的趋势。问及Firefox受欢迎的原因,多半都是因为它可以添加多种网页开发插件的优点。

下面我介绍几款常用的网页开发的常用插件:

29
2012
08

JS execCommand方法

document.execCommand()方法处理Html数据时常用语法格式如下:
document.execCommand(sCommand[,交互方式, 动态参数])

其 中:sCommand为指令参数(如下例中的”2D-Position”),交互方式参数如果是true的话将显示对话框,如果为false的话,则不显 示对话框(下例中的”false”即表示不显示对话框),动态参数一般为一可用值或属性值(如下例中的”true”)。

...

16
2012
08

MySQL查询出现乱码解决方案

如果遇到MySQL查询乱码的情况,应该如何解决呢?下面就将为您介绍一个处理MySQL查询乱码的方法,希望对您能够有所帮助。

使用mysql> select * from table into outfile 'c:\table.txt' where 条件 
(或selet * into outfile from table where 条件 )

导出来的数据会出现MySQL查询乱码情况。同时使用
mysql>load data local infile 'c:\\table.txt' into table `table`

插入的数据也会出现乱码情况。

究其原因,这是mysql服务器系统变量中的character_set_database中默认的字符集问题。

解决方法:

07
2012
08

[转]9 个单页面网站开发必备 jQuery 插件

 单页面网站作为简单快捷,易于维护的页面设计方案,越来越受到工作室,作品集,或者个人博客类网站用户的青睐,我们可以使用不同的特效来使得页面更加的丰富和炫动,今天我们将介绍几款可以作为单页面开发的jQuery插件,帮助大家快速简便的实现一个单页面的网站设计,希望大家喜欢!
       jQuery one page nav
      使用这个插件,可以帮助你快速的搭建一个滚动的页面导航,如果你需要比较简单直接的方式开发一个单页面的网站,这个插件是一个不错的选择。

 

jQuery ScrollPath

jQuery ScrollPath是一个非常棒的插件,允许你画出自己自定义的滚动路径。HTML元素可以被放置到路径上,而且类似的鼠标滚轮,键盘上下移动键,或者 空格都可以帮助你移动到你需要到达的元素位置。并且一个可选的自定义滚动条可以帮助你方便的点击和拖拽滚动。而且插件允许你使用CSS变形旋转整个页面。

 

05
2012
08

MinGW和MSYS的自动安装

国内网络访问sourceforge的速度通常是非常慢的,要命的是MinGW没有提供离线完整包下载,而自动包的安装的过程中不会一一重试,于是各种下载龟速甚至有ERROR发生。好在MinGW的安装路径留有一个cache目录,里面存放有所有下载下来的组件包且不会删除(即使卸载也会保留,如果需要可以删掉来节省空间)。那样的话可以直接将所有需要的组件包先放入cache目录然后运行安装包就行了,方便快捷。

cache目录的位置在:
C:\MinGW\var\cache\mingw-get\packages
你可能需要先建立它的所有父目录再放入所有的组件包。

【2012-05-02更新】所有组件包的网盘下载(包含MinGW安装包):

http://115.com/file/dpn52jxw#mingw-get-inst-20120426.rar
http://dl.dbank.com/c06qouk24k
解压密码是www.swingworks.net

mingw2-12.jpg

16
2012
07

在HTTPS协议下使用FusionCharts报表插件时提示"error in loading data"的解决方法

今天在公司的一个报表项目中,IE使用FusionCharts的时候突然出现了"error in loading data"的错误提示(在火狐中是正常的)

之前在本地测试的时候正常的啊,怎么到线上就出现问题了?

由于是flash调用xml,我第一个想到的是会不会是编码的问题。

google查找了一下,http://kb.fusioncharts.com/questions/387/How+to+use+UTF-8+characters+with+PHP%3F 按照官方的说啊

把编码都改成了UTF8,而且也加上了BOM头。

echo pack("CCC",0xef,0xbb,0xbf);
echo "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n";
header('Content-type: text/xml;charset=UTF-8');

29
2012
06

修改iPhone/ipad/touch等ios设备的Hosts文件

本教程适用于全系列苹果移动设备,用iphone举例,ipad和touch方法一样。

注意:必须是越狱(破解)并安装了Cydia的iPhone、ipad或者iPod Touch。

用Iphone Explorer操作:

1、将已经越狱的手机连接上iphone explorer或91文件管理器等可以查看系统文件的工具。

2、找到Root--etc--hosts文件,如下图所示:

19
2012
06

Rolling cURL: PHP并发最佳实践

在实际项目或者自己编写小工具(比如新闻聚合,商品价格监控,比价)的过程中, 通常需要从第3方网站或者API接口获取数据, 在需要处理1个URL队列时, 为了提高性能, 可以采用cURL提供的curl_multi_*族函数实现简单的并发.

本文将探讨两种具体的实现方法, 并对不同的方法做简单的性能对比.

1. 经典cURL并发机制及其存在的问题

经典的cURL实现机制在网上很容易找到, 比如参考PHP在线手册的如下实现方式: