当前位置:首页 » 编程语言 » php采集类

php采集类

发布时间: 2022-04-19 21:13:50

php采集大数据的方案

1、建议你读写数据和下载图片分开,各用不同的进程完成。
比如说,取数据用get-data.php,下载图片用get-image.php。

2、多进程的话,php可以简单的用pcntl_fork()。这样可以并发多个子进程。
但是我不建议你用fork,我建议你安装一个gearman worker。这样你要并发几个,就启几个worker,写代码简单,根本不用在代码里考虑thread啊,process等等。

3、综上,解决方案这样:
(1)安装gearman worker。
(2)写一个get-data.php,在crontab里设置它每5分钟执行一次,只负责读数据,然后把读回来的数据一条一条的扔到 gearman worker的队列里;
然后再写一个处理数据的脚本作为worker,例如叫process-data.php,这个脚本常驻内存。它作为worker从geraman 队列里读出一条一条的数据,然后跟你的数据库老数据比较,进行你的业务逻辑。如果你要10个并发,那就启动10个process-data.php好了。处理完后,如果图片地址有变动需要下载图片,就把图片地址扔到 gearman worker的另一个队列里。
(3)再写一个download-data.php,作为下载图片的worker,同样,你启动10个20个并发随便你。这个进程也常驻内存运行,从gearman worker的图片数据队列里取数据出来,下载图片

4、常驻进程的话,就是在代码里写个while(true)死循环,让它一直运行好了。如果怕内存泄露啥的,你可以每循环10万次退出一下。然后在crontab里设置,每分钟检查一下进程有没有启动,比如说这样启动3个process-data worker进程:
* * * * * flock -xn /tmp/process-data.1.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'

不知道你明白了没有

⑵ 如何用php采集新浪财经

给您提供一下思想,希望能够帮您解决。fopen("tmp.htm","r"); //只读打开
$str=str_replace("{title}",$title,$str);
$str=str_replace("{content}",$content,$str);//替换内容
fclose($fp);简单的采集常用函数。,您也可以用强大的snoopy采集类。彩集新浪财经,需要查看/分析源代码,然后用正则表达式,匹配要采集的代码然后重新组织数据结构。

⑶ php采集代码是什么

采集就是把目标网站的内容通过php代码存储到自己的网站数据库中,从而把别人的变成自己的。

这样就可以省去很多自己发布信息的时间,非常快速。

但是只建议在网站建立之初进行采集,因为如果采集过多会被搜索引擎屏蔽

⑷ PHP中怎样实现文章采集

只举例说明,生产环境你自己根据情景去搞
$url = 'www.domain.com';

$content = file_get_content($url);//抓取网页全部内容
preg_match( string pattern, string subject [, array matches ] );//正则获取自己需要的内容
入库~
完事了。。。
当然,情形复杂,例如需要登录,采集目标限制等问题,这再说...
实际使用的时候,可以直接使用Snoopy类,提供好多方法供使用,比自己去造轮子要安全,当然,你可以在她的基础上再去造轮子~~~

⑸ 用PHP进行数据采集

$strPreg = "|<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>|U";

搞定了才发现你都没悬赏分。。。

⑹ 目前php这块数据采集的开发思路有哪些

指定网站的路径URL,2.确定当前URL页面的指定区域(我的是class="xxx"),将该区域的所有的内容拿过来,进行正则或是其他方式匹配。将匹配的结果过滤后,保存到数据库。
你可以去后盾人平台看一下,里面的东西不错

⑺ 怎样用php 采集百度地图的数据

一般来说,PHP采集数据最简单的办法是使用file_get_content函数,功能更强大的推荐使用cURL函数库。

⑻ PHP 采集程序中常用的函数

复制代码
代码如下:
//获得当前的脚本网址
function
get_php_url()
{
if(!empty($_SERVER[”REQUEST_URI”]))
{
$scriptName
=
$_SERVER[”REQUEST_URI”];
$nowurl
=
$scriptName;
}
else
{
$scriptName
=
$_SERVER[”PHP_SELF”];
if(empty($_SERVER[”QUERY_STRING”]))
$nowurl
=
$scriptName;
else
$nowurl
=
$scriptName.”?”.$_SERVER[”QUERY_STRING”];
}
return
$nowurl;
}
//把全角数字转为半角数字
function
GetAlabNum($fnum)
{
$nums
=
array(”0”,”1”,”2”,”3”,”4”,”5”,”6”,”7”,”8”,”9”);
$fnums
=
“0123456789″;
for($i=0;$i<=9;$i++)
$fnum
=
str_replace($nums[$i],$fnums[$i],$fnum);
$fnum
=
ereg_replace(”[^0-9\.]|^0{1,}”,””,$fnum);
if($fnum==””)
$fnum=0;
return
$fnum;
}
//去除HTML标记
function
Text2Html($txt)
{
$txt
=
str_replace(”
“,””,$txt);
$txt
=
str_replace(”<”,”<”,$txt);
$txt
=
str_replace(”>”,”>”,$txt);
$txt
=
preg_replace(”/[\r\n]{1,}/isU”,”<br/>\r\n”,$txt);
return
$txt;
}
//清除HTML标记
function
ClearHtml($str)
{
$str
=
str_replace('<','<',$str);
$str
=
str_replace('>','>',$str);
return
$str;
}
//相对路径转化成绝对路径
function
relative_to_absolute($content,
$feed_url)
{
preg_match('/(http|https|ftp):\/\//',
$feed_url,
$protocol);
$server_url
=
preg_replace(”/(http|https|ftp|news):\/\//”,
“”,
$feed_url);
$server_url
=
preg_replace(”/\/.*/”,
“”,
$server_url);
if
($server_url
==
”)
{
return
$content;
}
if
(isset($protocol[0]))
{
$new_content
=
preg_replace('/href=”\//',
‘href=”‘.$protocol[0].$server_url.'/',
$content);
$new_content
=
preg_replace('/src=”\//',
'src=”‘.$protocol[0].$server_url.'/',
$new_content);
}
else
{
$new_content
=
$content;
}
return
$new_content;
}
//取得所有链接
function
get_all_url($code){
preg_match_all('/<a\s+href=[”|\']?([^>”\'
]+)[”|\']?\s*[^>]*>([^>]+)<\/a>/i',$code,$arr);
return
array('name'=>$arr[2],'url'=>$arr[1]);
}
//获取指定标记中的内容
function
get_tag_data($str,
$start,
$end)
{
if
(
$start
==

||
$end
==

)
{
return;
}
$str
=
explode($start,
$str);
$str
=
explode($end,
$str[1]);
return
$str[0];
}
//HTML表格的每行转为CSV格式数组
function
get_tr_array($table)
{
$table
=
preg_replace(”‘<td[^>]*?>'si”,'”‘,$table);
$table
=
str_replace(”</td>”,'”,',$table);
$table
=
str_replace(”</tr>”,”{tr}”,$table);
//去掉
HTML
标记
$table
=
preg_replace(”‘<[\/\!]*?[^<>]*?>'si”,””,$table);
//去掉空白字符
$table
=
preg_replace(”‘([\r\n])[\s]+'”,””,$table);
$table
=
str_replace(”
“,””,$table);
$table
=
str_replace(”
“,””,$table);
$table
=
explode(”,{tr}”,$table);
array_pop($table);
return
$table;
}
//将HTML表格的每行每列转为数组,采集表格数据
function
get_td_array($table)
{
$table
=
preg_replace(”‘<table[^>]*?>'si”,””,$table);
$table
=
preg_replace(”‘<tr[^>]*?>'si”,””,$table);
$table
=
preg_replace(”‘<td[^>]*?>'si”,””,$table);
$table
=
str_replace(”</tr>”,”{tr}”,$table);
$table
=
str_replace(”</td>”,”{td}”,$table);
//去掉
HTML
标记
$table
=
preg_replace(”‘<[\/\!]*?[^<>]*?>'si”,””,$table);
//去掉空白字符
$table
=
preg_replace(”‘([\r\n])[\s]+'”,””,$table);
$table
=
str_replace(”
“,””,$table);
$table
=
str_replace(”
“,””,$table);
$table
=
explode('{tr}',
$table);
array_pop($table);
foreach
($table
as
$key=>$tr)
{
$td
=
explode('{td}',
$tr);
array_pop($td);
$td_array[]
=
$td;
}
return
$td_array;
}
//返回字符串中的所有单词
$distinct=true
去除重复
function
split_en_str($str,$distinct=true)
{
preg_match_all('/([a-zA-Z]+)/',$str,$match);
if
($distinct
==
true)
{
$match[1]
=
array_unique($match[1]);
}
sort($match[1]);
return
$match[1];
}

⑼ php使用3种方法实现数据采集 什么叫采集

下面的php代码可以将HTML表格的每行每列转为数组,采集表格数据
<?php function get_td_array($table) { $table = preg_replace("'<table[^>]*?>'si","",$table); $table = preg_replace("'<tr[^>]*?>'si","",$table); $table = preg_replace("'<td[^>]*?>'si","",$table); $table = str_replace("</tr>","{tr}",$table); $table = str_replace("</td>","{td}",$table); //去掉 HTML 标记 $table = preg_replace("'<[/!]*?[^<>]*?>'si","",$table); //去掉空白字符 $table = preg_replace("'([rn])[s]+'","",$table); $table = str_replace(" ","",$table); $table = str_replace(" ","",$table); $table = explode('{tr}', $table); array_pop($table); foreach ($table as $key=>$tr) { $td = explode('{td}', $tr); array_pop($td); $td_array[] = $td; } return $td_array; } ?>

⑽ php自动采集如何实现

PHP自动采集能一定程度的实现,部分网站的页面结构存在一定的共通点,比如文章内容页的标题,不少网站是标记在<h1>里的,实在不行,就采集<title>,绝对能采到,然后、过滤掉title里面的网站名称。
采集文章内容就相对麻烦,但是通过层层分析,层层剥离,一定要进行大量的网站分析,写出多套通用性比较强的采集规则,程序在采集的时候也要进行大量分析。
有几点是可以肯定的,那就是绝对不能要求采集效果达到为某个网站单独写采集规则来的效果好,也绝对不是能匹配任意网站,顶多能匹配部分网站。

热点内容
如何破解软件登录不了服务器 发布:2025-01-24 02:05:07 浏览:11
春节三新算法 发布:2025-01-24 02:03:22 浏览:17
我的世界服务器房间号2020电脑版 发布:2025-01-24 01:28:05 浏览:398
微信提示存储空间不足 发布:2025-01-24 01:19:53 浏览:963
安卓电脑管家如何清除缓存 发布:2025-01-24 00:55:42 浏览:148
怎么上传歌曲到qq音乐 发布:2025-01-24 00:45:30 浏览:65
养猫用什么配置 发布:2025-01-24 00:37:58 浏览:812
pythongps 发布:2025-01-24 00:37:51 浏览:813
办公编程鼠标 发布:2025-01-24 00:37:07 浏览:386
wpa加密类型 发布:2025-01-24 00:35:58 浏览:960