高考试题库采集插件

某君要采集一个网站的收费试题,给写了一个插件,一个比较怪异的网站,下载算法有点意思,花了一点心思。没有使用Snoopy,而是使用了CURL函数。

这段时间在采集国内Android应用,逐渐开始封装一些常用Curl方法,在工作中能实现逐步调试和个性化数据请求。

这个插件是支持火车采集器内置插件的,但我机器上只有php5.2.11的环境,所以随带着把火车采集器的PHP版本库升级了一下。

升级方法很简单,将PHP5.2.11目录下的所有文件拷贝到火车的system目录下,然后把php.exe改成site.exe,site.ini就是php.ini了,可以进行各种配置。

注:以下代码非完整代码,仅供学习


<?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;
}

以上的CURL方法由火车采集器官方的孤魂同志整理提供,将CURL常用的参数一一做了中文注释,造福我辈呀。

《高考试题库采集插件》有1个想法

发表评论

电子邮件地址不会被公开。