采集入库程序原理

php开发通用采集程序(一)

php采集程序构建基本步骤:
采集程序是什么?获取远程数据(文字、图片、图片)并快速保存到本地或指定地址。
如天气预报(小偷程序):
远程获取--》替换内容--》展示给用户
如实时更新的新闻(采集内容):
远程获取--》提取内容--》分类存储--》读取内容---》展示内容

*************************
设计PHP采集入库UML
列表正则:
终端正则:
**************************
file_get_contents()获取远程页面内容
preg_match_all()匹配列表
preg_match()匹配终端
preg_replace() :过滤终端
**************************
新建一个列表文件:lb.php
echo $con=file_get_cotents($_GET[url]);
$preg ="#<h1><a href=‘(.*)‘ target=‘_blank‘>(.*)</a><span>#iUs";

preg_match_all($preg,$conn,$arr);
foreach($arr[1] as $id=>$v){
echo $v." "arr[2][$id]."<br>";
}

新建vi。php获取标题

vi.php

$con=file_get_contents();
$preg="<title>(.*)</title>/iUs";//大小写不敏感,防止贪婪匹配,防止换行
echo zz($preg,$con);
function zz($preg,$con,$num=1){
preg_match($preg,$con,$arr);
return $arr[$num];
}

echo $arr[1];//获取标题
echo "<a href=vi.php?url=".$v.">".arr[2][$id]."<br>";
======================================
php100:83:采集程序

lb.php
<?php
if($_GET[id]){
$con=file_get_cotents($_GET[url].$_GET[id]."shtml");
$preg ="/<h1><a href=‘(.*)‘ target=‘_blank‘>(.*)</a><span>/iUs";

perg_match_all($preg,$conn,$arr);
foreach($arr[1] as $id=>$v){
echo $v." "arr[2][$id]."<br>";
}
$_GET[id]++;

echo "<script>location.href=‘lb.php?id=‘.$_GET[id]."</script>";
}
?>

http://www.xinhuanet.com/finance/tzxx.htm

===============================================================
操作步骤:
1.新建一个数据库caiji,tep_url表,id,title,content,11 ,100,150
2.新建一个conn.php,插入的语句可以通过phpmyadmin插入一个语句简单的获得
3.新建一个vi.php
4.单条入库获取下一条。

临时的路径列表:
完善我的入库表。

假设删删除了其中的一条Id值,怎么办?删除了第9条!
多加一条语句
$sql2="select * from tmp_url where id>‘$gid‘order by id asc limit 1

code:

ls.php

<?php
include_once(‘conn.php‘);
if(@$_GET[‘id‘]<=6 && @$_GET[‘id‘]){
  if(@$_GET[‘id‘]==1){
$con=file_get_contents("http://www.php100.com/html/shipinjiaocheng/PHP100shipinjiaocheng/");
}else{
$con=file_get_contents("http://www.php100.com/html/shipinjiaocheng/PHP100shipinjiaocheng/"[email protected]$_GET[‘id‘].".html");
}
$preg="#<td height=\"25\"><img src=\"(.*)\"> <a href=\"(.*)\" style=\"font-size:14px\"><strong><b>(.*)</b></strong></a></td>#iUs";

preg_match_all($preg,$con,$arr);

foreach ($arr[2] as $id=>$v){
 echo "<a href=vi.php?url=".$v.">".$arr[3][$id]."</a><br>";
 
 $sql="INSERT INTO `caiji` (`id`, `title`, `url`) VALUES (NULL, ‘".$arr[3][$id]."‘, ‘".$v."‘)";
 mysql_query($sql);
    }
    @$_GET[‘id‘]++;
   
    echo "正在采集列表...."[email protected]$_GET[‘id‘];
    echo "<script>location.href=‘ls.php?id="[email protected]$_GET[‘id‘]."‘</script>";
}else{
 echo "采集结束";
}
?>

vi.php

<?php

include_once(‘conn.php‘);
$gid=(int)@$_GET[‘id‘];
$sql="select * from `caiji` where `id`=‘$gid‘";
$query=mysql_query($sql);
$row=mysql_fetch_array($query);

$con=file_get_contents($row[‘url‘]);
    echo $title=zz("#<title>(.*)</title>#iUs",$con);
    echo $con=zz("#<ul class=\"downurllist\">(.*)</ul>#iUs",$con);
    $content=addslashes($con);
    $intosql="INSERT INTO `caiji`.`news` (`id`, `title`, `content`) VALUES (NULL,‘$title‘,‘$content‘)";
    mysql_query($intosql);

$sql2="select * from `caiji` where `id`>‘$gid‘ order by `id` asc limit 1";
$query2=mysql_query($sql2);
$row2=mysql_fetch_array($query2);
if($row2[0]){
echo "<script>location.href=‘vi.php?id=".$row2[0]."‘</script>";
}

function zz($preg,$con,$num=1){
    preg_match($preg,$con,$arr);
    return $arr[$num]; 
    }

?>

采集入库程序原理

时间: 2024-10-28 23:16:22

采集入库程序原理的相关文章

基于PHP采集数据入库程序(二)

在上篇基于PHP采集数据入库程序(二) 中提到采集新闻信息页的列表数据,接下来讲讲关于采集新闻具体内容 这是上篇博客的最终数据表截图: 接下来要做的操作就是从数据库中读取所需要采集的URL,进行页面抓取就行 新建一个content表 不过需要注意的一点是,不能再采用采集URL这种id递增的方法去采集,因为数据表中可能出现id断续,比如id=9,id=11,当采集到id=10的时候,URL是空白的,这样可能会导致采集到了空字段. 这里用到的一个技巧是数据库的查询语句,在我们采集完第一条数据的时候,

基于PHP采集数据入库程序(一)

前几天有一朋友要我帮做一个采集新闻信息的程序,抽了点时间写了个PHP版本的,随笔记录下. 说到采集,无非就是远程获取信息->提取所需内容->分类存储->读取->展示 也算是简单"小偷程序"的加强版吧 下面是对应核心代码(别拿去做坏事哦^_^) 所要采集的内容是某游戏网站上的公告,如下图: 可先利用file_get_contents和简单正则获取基本页面信息 整理下基本信息,采集入库: <?php include_once("conn.php&qu

GA(遗传算法)的Matlab程序原理(from:六分之一工作室)

z=f(x,y) 1. 编码(解决初始化种群),先创建一个数组pop(popsize stringlenth)有popsize表示染色体个数列stringlenth的前 一部分代表x的染色体,后一部分代表y的染色体.计算x,y染色体对所对应的十进制数值并记数组pop的第 stringlenth+1,stringlenth+2列,计算f(x,y)的值并计为数组pop的第stringlenth+3列,计算每个染色体的 复制概率并计为数组pop的第stringlenth+4列 function[pop

【转】微信小程序原理

微信小程序原理 kamidox 关注 2016.11.05 09:42* 字数 2356 阅读 14621评论 5喜欢 75赞赏 1 微信小程序使用了前端技术栈 JavaScript/WXML/WXSS.它背后的原理是怎么样的呢? 写在前面 微信小程序使用了前端技术栈 JavaScript/WXML/WXSS.但和常规的前端开发又有一些区别: JavaScript: 微信小程序的 JavaScript 运行环境即不是 Browser 也不是 Node.js.它运行在微信 App 的上下文中,不能

Hadoop- Wordcount程序原理及代码实现

如果对Hadoop- MapReduce分布式计算框架原理还不熟悉的可以先了解一下它,因为本文的wordcount程序实现就是MapReduce分而治之最经典的一个范例. 单词计数(wordcount)主要步骤: 1.读数据 2.按行处理 3.按空格切分行内单词 4.HashMap(单词,value+1) 等分给自己的数据片全部读取完之后 5.将HashMap按照首字母范围分为3个HashMap 6.将3个hashMap分别传给3个ReduceTask 主要流程如下图: 代码实现: 理解了原理,

ADS 下 flash 烧写程序原理及结构

本原理:在 windows 环境下借助 ADS 仿真器将在 SDRAM 中的一段存储区域中的数据写到 Nand flash 存 储空间中.烧写程序在纵向上分三层完成: 第一层: 主烧写函数(完成将在 SDRAM 中的一段存储区域中的数据写到 Nand flash 存储空间中): 第二层: 为第一层主烧写函数提供支持的对 Nand flash 进行操作的页读.写,块擦除等函数: 第三层:为第二层提供具体 Nand flash 控制器中对特殊功能寄存器进行操作的核心函数,该层也是真正的 将数据能够在

第1课 - GUI 程序原理分析

1. 命令行应用程序 (1)命令行应用程序的特点 ①是一种基于顺序执行结构的可执行程序 ②程序执行过程中不需要与用户产生交互 ③程序执行后给出最终的运行结果 (2)命令行应用程序的运行模式--程序运行有固定的开始和结束 (3)命令行应用程序适用场合 ①单任务场合 ②无效互或简单交互场合 ③服务器应用场合 2. 图形界面应用程序 (1)图形界面应用程序的诞生 ①随着计算机技术的发展,计算机走进日常生活 ②计算机程序开始需要处理各个领域中的问题 ③计算机用户已经不再是专业的计算机工作者 (2)图形界

第1课 GUI程序原理分析

1. 命令行应用程序 (1)命令行应用程序的特点 ①是一种基于顺序执行结构的可执行程序 ②程序执行过程中不需要与用户产生交互 ③程序执行后给出最终的运行结果 (2)命令行应用程序的运行模式——程序运行有固定的开始和结束 (3)命令行应用程序适用场合 ①单任务场合 ②无效互或简单交互场合 ③服务器应用场合 2. 图形界面应用程序 (1)图形界面应用程序的诞生 ①随着计算机技术的发展,计算机走进日常生活 ②计算机程序开始需要处理各个领域中的问题 ③计算机用户已经不再是专业的计算机工作者 (2)图形界

OGRE启动过程详解(OGRE HelloWorld程序原理解析)

本文介绍 OGRE 3D 1.9 程序的启动过程,即从程序启动到3D图形呈现,背后有哪些OGRE相关的代码被执行.会涉及的OGRE类包括: Root RenderSystem RenderWindow ResourceGroupManager LogManager Viewport SceneManager Camera SceneNode Entity Light 建议在阅读本文时参考OGRE API Reference,OGRE官方给的API Reference没有类的协作图,可以自己用Do