论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
图5.2添加分类
function addsiteform() {
<br><div align=center><center><table>
<form action=admin.php method=post>
<input type=hidden name=f value=1>
……
<tr><td><b>标题:</b></td><td></td><td> <input type=text name=title size=60></td></tr>
<tr><td><b>简短描述:</b></td><td></td><td><textarea name=short_desc cols=45 rows=3
wrap="virtual"></textarea></td></tr>
<tr><td>类别:</td><td></td><td>
<? walk_through_cats(0, 0, '');?></td></tr>
<tr><td></td><td></td><td><input
type=submit value=Add></td></tr></form></table></center></div>
……
5.4 单独抓取一个URL
需要对单个web文档进行抓取,利用该模块就可以避免在站点列表中编辑URL的抓取属性,如图5.3。
图5.3单独抓取一个URL
function indexscreen ($url, $reindex) {
global $mysql_table_prefix;
$check = "";
$spider_depth = 2;
if ($url=="") {
$url = "http://";
$advurl = "";
} else {
$advurl = $url;
$result = mysql_query("select spider_depth, required, disallowed from ".$mysql_table_prefix."sites " .
"where url='$url'");
echo mysql_error();
if (mysql_num_rows($result) > 0) {
$row = mysql_fetch_row($result);
$spider_depth = $row[0];
$must = $row[1];
……
<div align="center"><center><table><tr><td valign="top" align="center" colspan="2">
<p> </p></td></tr>
<form action="spider.php" method="post">
<tr><td><b>地址:</b></td><td> <input type="text" name="url" size="48" value=<?print "\"$url\"";?></td></tr>
<tr><td><b>索引选项:</b></td><td>
<input type="radio" name="soption" value="full"> 全部<br>
<input type="radio" name="soption" value="level" checked>深度: <input type="text" name="maxlevel" size="2" value="<?print $spider_depth;?>"><br>
<?if ($reindex==1) $check="checked"?>
……
<tr><td></td><td><input type="submit" value="Start indexing"></td></tr>
<tr><td>
……
5.5 网络蜘蛛设置
顾名思义,网络蜘蛛就是在网络上爬行的程序,用他来抓取WEB服务器上的web文档,它可以在扫描WEB页面的同时检索其内的超链接并加入扫描队列等待以后扫描。因为WEB中广泛使用超链接,所以一个Spider程序理论上可以访问整个WEB页面,也很有可能在这些连接过程形成了一个环,所以限制网络蜘蛛的爬行能防止很多问题,包括同一个web文档被爬取多次、也避免了浪费时间,其设置如下图5.4所示,在“深度”项填入网络蜘蛛的爬取深度。网络蜘蛛在爬取过程中,采用广度优先的爬行策略。
图5.4网络蜘蛛设置
function showsites() {
global $mysql_table_prefix;
$result = mysql_query("SELECT site_id, url, title, indexdate from ".$mysql_table_prefix."sites ORDER By indexdate, title");
echo mysql_error();
……
$class = "grey";
while ($row=mysql_fetch_array($result)) {
if ($row['indexdate']=='') {
$indexstatus="<font color=\"red\">Not indexed</font>";
$indexoption="<a href=\"admin.php?f=12&url=$row[url]\">Index</a>";
} else {
$site_id = $row['site_id'];
……
}
}
if ($class =="white")
$class = "grey";
else
$class = "white";
……
}
print "<tr class='white'><td colspan='4' align='center'>" .
"<form action='spider.php' method='post'>" .
"<input type='hidden' name='all' value='1'>" .
"<input type='submit' value='Reindex all'><form></td></tr>";
print "</table></td></tr></table></center></div>";
}
其中spider.php部分代码为:
<?
set_time_limit (0);
error_reporting (E_ALL ^ E_NOTICE);
$include_dir = "../include";
include "auth.php";
include "$include_dir/commonfuncs.php";
include "messages.php";
include "$include_dir/conf.php";
include "spiderfuncs.php";
$all = 0;
extract (getHttpVars());
$command_line = 0;
if (isset($_SERVER['argv']) && $_SERVER['argc'] >= 2) {
if (strtolower($_SERVER['argv'][1]) == 'all') {
$all = 1;
$command_line = 1;
} else {
$command_line = 1;
$url = $_SERVER['argv'][1];
foreach ($_SERVER['argv'] as $arg) {
………
if ($soption == 'full') {
$maxlevel = -1;
}
if ($domaincb == '') {
$domaincb = 0;
}
if ($all == 1) {
index_all();
} else {
if ($reindex == 1 && $command_line == 1) {
$result=mysql_query("select url, spider_depth, required, disallowed, can_leave_domain from
5.6 抓取web文档
抓取web文档属于模块,管理控制抓取过程,是索引模块部分,可以根据需要对选定发URL分类,并对其抓取进行