Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        5年前关闭。
                                                                                            
                
        
您可以跳过所有背景信息,尽管它会有所帮助。

背景

我拥有一个对丹麦所有心理学家进行索引的网站。
我的网站提供了所有诊所的联系信息以及用户评分。

我目前列出的是12.000位心理学家,其中约有6000位拥有网站。大约1000位心理学家访问了我的网站,并在个人资料中添加了其他“描述性”信息(例如开放时间,价格等)。

出于信息性原因,我试图自动(使用PHP和RegEx)抓取那些未向我的社区提供详细信息的站点。

我浏览了大约150个不错的网站,并得出结论:超过85%的网站上都有“ Velkommen”一词(“欢迎”,用Denish开头)的有价值的文字。珍贵!

问题

#1

我该如何在脚本中具体说明一下,我只想获取大约。 360个字符,仅此而已。 Ofc。这应该在(包括)Velkommen一词的前面。另外,脚本不应该区分大小写(尽管Velkommen通常用大写V拼写,但可以在另一句话中弹出。)

另外,它应该是整个首页上最后一次出现的“ velkommen”,因为有时它会作为菜单/导航选项出现,这很烂,因为我随后会抓住导航选项。

#2

目前,我的脚本将信息保存在多个数组中,然后保存在数据库中。

不知道我该怎么做。什么是最适合SEO?


将抓取的文本保存在MySQL中并每次显示。
每次[在“ Velkommen”之后”都渲染相同的360个字符的文本
每次有人在我的网站上查看特定的心理学家时,都会从网站上随机显示360个字符的文本。


这是一个示例网站和我当前的脚本:

$web = "http://www.psykologdorthelau.dk/";
$website = file_get_contents ($web);

preg_match_all("/velkommen.+?/sim", $website, $information);

//THIS SHOULD SPECIFICY THE VERY LAST 'VELKOMMEN' - it doesn't, I know :(
for($i = 0; $i < count($information[0]); $i++){

preg_match_all("/Velkommen (.+?)\"/sim", $information[0][$i], $text, PREG_SET_ORDER);

$psychologist[$i]['text'] = mysql_real_escape_string($text[0][1]);
}


感谢您,来自这个美丽的丹麦国家的人,能够解决这个难题。

最佳答案

尝试这样的事情:

<?php

$web = "http://www.psykologdorthelau.dk/";
$website = file_get_contents ($web);

// TRY TO FIND ALL OF THE MATCHES
preg_match_all('/velkommen.{1,351}/ims', $website, $matches);

// PULL OUT THE LAST ITEM FROM THE `$matches`
$last_velkommen = array_pop($matches[0]);

07-28 11:07