360前端cdn公共js库e-z
幸好我写得一手好爬虫,2016年爬取了360前端js库代码共821MB。自libs.useso.com CDN镜像关闭之后,360前端cdn公共js库a-d和360前端cdn公共js库e-z这两部分便作为私服前端库。
360前端cdn公共js库a-d
幸好我写得一手好爬虫,2016年爬取了360前端js库代码共821MB。自libs.useso.com CDN镜像关闭之后,360前端cdn公共js库a-d和360前端cdn公共js库e-z这两部分便作为私服前端库。
PHP-redis单文件客户端
无需php-redis扩展支持,引入单个文件即可连接redis服务。
使用方法:
include 'Redis-client.php';
$redis = new Redis('127.0.0.1', 6379);
注:此类仅作测试使用,正式环境请使用php-redis扩展。如果Windows下运行遇到Cannot redeclare class RedisException in ……报错,请注释掉php.ini中的extension=php_redis.dll。
php-memcache单文件类库
无需php-memcache扩展支持,引入单个文件即可连接memcached服务。
使用方法:
$mc = new memcached(array(
'servers' => array('127.0.0.1:11211'),
'debug' => false,
'compress_threshold' => 10240,
'persistant' => true));
注:此类仅作测试使用,正式环境请使用php-memcache扩展。如果Windows下运行遇到Constant MEMCACHE_COMPRESSED already defined in ……报错,请注释掉php.ini中的extension=php_memcache.dll。
Snoopy.class.php——登陆采集利器
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。使用Snoopy来模拟登陆,然后采集登陆后的页面非常管用!
Snoopy的特点:
1、抓取网页的内容 fetch
2、抓取网页的文本内容 (去除HTML标签) fetchtext
3、抓取网页的链接,表单 fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码验证
6、支持设置 user_agent, referer(来路), cookies 和 header content(头文件)
7、支持浏览器重定向,并能控制重定向深度
8、能把网页中的链接扩展成高质量的url(默认)
9、提交数据并且获取返回值
10、支持跟踪HTML框架
11、支持重定向的时候传递cookies
要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。
Underscore.php——Underscore.js的php移植版
Underscore.js是目前最好用的Javascript工具包,提供了100多个函数。Underscore.php是Underscore.js的PHP移植版,并且实现了部分Underscore.js中的功能!
我花了一个月的时间将Underscore.php的文档翻译为中文,开源仓库地址:
https://github.com/shuiguang/Underscore.php
注意:Underscore.php的原作者是老牌PHP程序员,其中使用静态调用方式访问非静态方法时php会提示Strict Standards: Non-static method的严谨性警告,不过只需要在php脚本的头部添加:
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
即可屏蔽该警告,笔者已经在php7正式版中做了大量测试,Underscore.php依然非常好用!
java连接sqlserver2000和2008的三个jar包
学习java通过jdbc连接sqlserver2000和2008数据库时所需的三个jar包,对着project右键——Properties——Libraries——Add External JARs,添加
msbase.jar、mssqlserver.jar、msutil.jar这3个包。
js版uc_authcode例子修正版
Discuz!X中uc_authcode函数js版本,可以与php版的uc_authcode双向加密解密。依赖文件:md5.js。依赖函数:base64_encode(js版)、base64_decode(js版)。对IE浏览器做了兼容,目前可兼容IE6,7,8,opera,firefox,google等浏览器。
字符串边界截取函数
字符串边界截取函数,只需要输入原始字符串,左侧字符串,右侧字符串,即可返回中间的字符串(不带左侧和右侧字符串)。
phpQuery-onefile.php
php解析html页面的类库之一,和jquery非常类似,用于采集html页面和解析node节点。phpQuery的功能比simple_html_dom强大,使用方式上更接近于jquery,查看其源码可以知道其所支持的属性和方法。
phpQuery存在单文件版本和多文件版本,一般使用单文件足以。使用方法如下:
include 'phpQuery-onefile.php';
//面向对象方式2种读取方式
phpQuery::newDocumentFile('http://www.baidu.com');
$contents = get_html_contents($main_url);
phpQuery::newDocument($contents);
foreach(pq('img') as $img)
{
echo pq($img)->attr('src')."<br>";
}
可以看出,phpQuery的pq相当于jquery的$符号,使用方式基本一致,查阅jquery手册即可。不过gbk网页需要注意编码问题,因为其解析为utf8编码,网上说可以使用phpQuery::$defaultCharset="GBK"进行申明,但不一定成功,建议在utf8环境下操作,解析获取到想要的内容之后再转码为所需的编码。
同样,如果需要解析大量html页面,建议使用phpQuery::$documents = array();方法释放内存。
simple_html_dom.php
php解析html页面的函数库之一,操作类似于原生js和jquery,主要用于采集html页面和解析node节点。simple_html_dom的常用操作:
include 'simple_html_dom.php';
//面向过程方式2种读取方式
$html = file_get_html('http://www.baidu.com');
$html = str_get_html(file_get_contents('http://www.baidu.com'));
//面向对象方式2种读取方式
$html = new simple_html_dom();
$html->load_file('http://www.baidu.com');
$html->load(file_get_contents('http://www.baidu.com'));
foreach($html->find('img') as $img)
{
print_r($img->src)."<br>";
}
simple_html_dom主打find方法,如果find只有一个参数其查找到的元素一般以对象数组的方式进行遍历;如果添加第二个参数表示索引则返回一个元素,如下:
echo "<pre>";
print_r($html->find('img', 0)->src);
echo "</pre>";
simple_html_dom的find方法参数一与jquery的模式基本一致,可以使用条件搜索,返回的变量e是一个对象,具有以下几类属性:
$e->tag 与原生js的tagName对应,jquery的$(e).attr('nodeName')对应
$e->outertext 与原生js的outerHTML对应,jquery的$(e).attr('outerHTML')对应
$e->innertext 与原生js的innerHTML对应,jquery的$(e).attr('innerHTML')或$(e).html()对应
$e->plaintext 与原生js的innerText对应,jquery的$(e).attr('innerText')或$(e).text()对应
常用的方法如下:
mixed $e->children(index) index为索引序号,返回第n个子节点对象
element $e->parent() 返回父节点对象
element $e->first_child() 返回第一个子节点对象
element $e->last_child() 返回最后一个子节点对象
element $e->next_sibling() 返回下一个邻节点对象
element $e->prev_sibling() 返回上一个邻节点对象
功能虽然发现的不多,但对应一般的html解析已经足够。如果需要解析大量html建议使用$html->clear()释放内存。