导航:首页 > 编程语言 > php列表采集

php列表采集

发布时间:2023-10-17 01:49:11

A. php 百度 知道数据采集

问题其实不难,自己都能写。给你几个思路吧:
1.在网络知道中,输入linux,然后会出现列表。复制浏览器地址栏内容。
然后翻页,在复制地址栏内容,看看有什么不同,不同之处,就是你要循环分页的i值。
当然这个是笨方法。
2.使用php的file或者file_get_contents函数,获取链接URL的内容。
3.通过php正则表达式,获取你需要的3个字段内容。
4.写入数据库。

需要注意的是,网络知道有可能做了防抓取的功能,你刚一抓几个页面,可能会被禁止。
建议也就抓10页数据。

其实不难,你肯定写的出来。 还有,网上应该有很多抓取工具,你找找看,然后将抓下来的数据
在做分析。写入数据库。

B. 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'

不知道你明白了没有

C. php循环采集出文章列表

在你的代码基础上稍微修改了一下 如下

<?php
header("Content-type: text/html; charset=gb2312");
$url = "http://top.qidian.com/Book/TopDetail.aspx?TopType=6"; //目标站
$fp = @fopen($url, "r") or die("超时");
$fcontents = file_get_contents($url);

preg_match_all("/ <a target=\"_blank\" href=\"http:\/\/www.qidian.com\/Book\/(.*?)\.aspx\"/is", $fcontents, $regs);
print_r($regs[0]);
?>

D. php 按照数字大小排序 关于PHP采集

$s = '<a href="123" title="第一">第一</a>
<a href="126" title="第三">第三</a>
<a href="128" title="第四">第四</a>
<a href="125" title="第二">第二</a>
<a href="1250" title="第五">第五</a>';
preg_match_all('|<a[^>]*href="([^>]+)"[^>]*>(.*)</a>|isU',$s,$data);

$tmp_data = array();
for($i=0;$i<count($data[1]);$i++){
$tmp_data[$data[1][$i]] = $data[0][$i];
}
ksort($tmp_data);
var_mp($tmp_data);

E. PHP如何遍历指定文件夹,获取所有文件列表并生成下载链接

试编写代码如下:

<?php

$dir="D:/WWW/ftp";//指定的路径
$sitepath='http://localhost/ftp/';
//遍历文件夹下所有文件
if(false!=($handle=opendir($dir))){
echo"$dir目录下的文件列表:<BR/>";
$i=0;
while(false!==($file=readdir($handle))){
if($file!="."&&$file!=".."&&!is_dir($dir.'/'.$file)){
echo'<ahref="'.$sitepath.$file.'">'.$file.'</a><br/>';
}
}
//关闭句柄
closedir($handle);
}

?>


代码中需要提示的是:


如果是运行于互联网上,需要考虑文件的访问安全性。


运行截图:


阅读全文

与php列表采集相关的资料

热点内容
路由器l2tp服务器地址是什么 浏览:160
做解压手套视频 浏览:620
退役命令文件 浏览:674
linux递归查找文件 浏览:242
哪个app上才能看到免费的名门挚爱 浏览:839
mysql查看表字段的命令 浏览:519
ios里的文件夹怎么用 浏览:164
压缩银行开户时间表 浏览:429
银行人员如何解压 浏览:829
newfile命令快捷键 浏览:569
阿里云物理服务器 浏览:955
灵狐视频app哪个好 浏览:259
大厂退役程序员自述 浏览:254
linux命令watch 浏览:889
加密币哪些平台不撤出中国 浏览:553
max加线命令 浏览:424
app胖瘦模式哪个好用 浏览:724
可以下载源码的软件 浏览:487
程序员写一天代码累吗 浏览:629
ie文件夹禁止访问 浏览:545