高考试题库采集插件
某君要采集一个网站的收费试题,给写了一个插件,一个比较怪异的网站,下载算法有点意思,花了一点心思。没有使用Snoopy,而是使用了CURL函数。
这段时间在采集国内Android应用,逐渐开始封装一些常用Curl方法,在工作中能实现逐步调试和个性化数据请求。
这个插件是支持火车采集器内置插件的,但我机器上只有php5.2.11的环境,所以随带着把火车采集器的PHP版本库升级了一下。
升级方法很简单,将PHP5.2.11目录下的所有文件拷贝到火车的system目录下,然后把php.exe改成site.exe,site.ini就是php.ini了,可以进行各种配置。
注:以下代码非完整代码,仅供学习
[php]
<?php
/* 返回给火车的标签名 */
$label = ‘download’;
/* Cookie,用于模拟登陆 */
$cookie = "YOURCOOKIEHERE";
$id = $LabelArray [$label] ? $LabelArray [$label] : ‘44198cf44fafff9c’;
/* 获取文件路径的地址,不用修改 */
$URI = ‘http://www.4wei.cn/inc/chk_download.php’;
/* 伪造数据 */
$headers [] = "Cookie: {$cookie}";
$headers [] = "Referer: http://www.4wei.cn/test/{$id}.html";
$url = "http://www.4wei.cn/speed.php?d={$id}";
$fileUrl = curl ( $url, ”, $headers );
$fileUrl = curl ( $url, ”, $headers );
if (empty ( $fileUrl )) {
$LabelArray [$label] = ”;
} else {
preg_match(‘@href="([^"]+)"@is’, $fileUrl, $match);
$LabelArray [$label] = $match[1];
}
echo serialize ( $LabelArray );
/*
* 提交数据
* $url 提交地址
* $content 提交内容
* $headers 请求头信息
*/
function curl($url, $content = "", $headers = "") {
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, 2 );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $content );
$data = curl_exec ( $ch );
if (curl_errno ( $ch )) {
return FALSE;
/*debug info*/
return curl_error ( $ch );
} else {
curl_close ( $ch );
}
return $data;
}
[/php]
以上的CURL方法由火车采集器官方的孤魂同志整理提供,将CURL常用的参数一一做了中文注释,造福我辈呀。
貌似我找孤魂写的。。。。。