本文目录一览:
- 1、php 百度 知道数据采集
- 2、php怎么抓取其它网站数据
- 3、php 定义一个二维数组,存储多部电影的信息.并使用foreach将电影信息显示到表格中
- 4、php采集大数据的方案
- 5、搜一次php1.6为什么采集电影的时候显示不支持当前采集环境,我用的vps,N点也安装了,用的mqsql数据库
- 6、做个PHP的小型电影网站,如何设计数据库?
php 百度 知道数据采集
问题其实不难,自己都能写。给你几个思路吧:
1.在百度知道中,输入linux,然后会出现列表。复制浏览器地址栏内容。
然后翻页,在复制地址栏内容,看看有什么不同,不同之处,就是你要循环分页的i值。
当然这个是笨方法。
2.使用php的file或者file_get_contents函数,获取链接URL的内容。
3.通过php正则表达式,获取你需要的3个字段内容。
4.写入数据库。
需要注意的是,百度知道有可能做了防抓取的功能,你刚一抓几个页面,可能会被禁止。
建议也就抓10页数据。
其实不难,你肯定写的出来。 还有,网上应该有很多抓取工具,你找找看,然后将抓下来的数据
在做分析。写入数据库。
php怎么抓取其它网站数据
可以用以下4个方法来抓取网站 的数据:
1. 用 file_get_contents 以 get 方式获取内容:
?
$url = '';
$html = file_get_contents($url);
echo $html;
2. 用fopen打开url,以get方式获取内容
?
$url = '';
$fp = fopen($url, 'r');
stream_get_meta_data($fp);
$result = '';
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}
echo "url body: $result";
fclose($fp);
3. 用file_get_contents函数,以post方式获取url
?
$data = array(
'foo'='bar',
'baz'='boom',
'site'='',
'name'='nowa magic');
$data = http_build_query($data);
//$postdata = http_build_query($data);
$options = array(
'http' = array(
'method' = 'POST',
'header' = 'Content-type:application/x-www-form-urlencoded',
'content' = $data
//'timeout' = 60 * 60 // 超时时间(单位:s)
)
);
$url = "";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
4、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展
$url = '';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
php 定义一个二维数组,存储多部电影的信息.并使用foreach将电影信息显示到表格中
?php
$movie = array(array('泰坦尼克号','2015-07-20'),array('终结者','2015-08-28'));
?
table border='1'
tr
td名称/td
td上映时间/td
/tr
?php foreach ($movie as $key = $value): ?
tr
td?php echo $value['0'] ?/td
td?php echo $value['1'] ?/td
/tr
?php endforeach ?
/table
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 21'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php /dev/null 21'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php /dev/null 21'
不知道你明白了没有
搜一次php1.6为什么采集电影的时候显示不支持当前采集环境,我用的vps,N点也安装了,用的mqsql数据库
你要贴出具体错误提示,例如它提示那个地方不支持。
php环境配置项很多,可能有一些没有打开。然后修改对应的php.ini
N点只是虚拟主机管理系统而已,和环境无关的。
做个PHP的小型电影网站,如何设计数据库?
可以参看discuz数据库表帖子,和帖子附件的设计,我的大概思路是这样的:
首先建立一个数据表"film"用来保存简短文字信息,其中包含:电影发布时有名字,主演,简介,归属栏目,发布电影的URL链接。在创建一个表(考虑到是小型网站,如果中型的话,可以选择10个,像discuz一样)"attachement",用来保存,上传截图,上传视频。这个表用一个外键与film表连接。中间在外键上加索引。
希望我的回答对你有帮助!