你可以跳过这个背景信息,虽然它有用。
背景
我拥有一个为丹麦所有心理学家编制索引的网站。 我的网站提供所有诊所的联系信息以及用户评级。
我目前正在列出12.000名心理学家,其中约有6000名拥有一个网站。大约1000名心理学家访问了我的网站,并用其他“描述性”信息(如营业时间,价格等)填写了他们的个人资料。
出于提供信息的原因,我正在尝试自动抓取(使用PHP和RegEx)那些没有向我的社区提供详细信息的网站。
我经历了一个随机的150个网站,并得出结论,超过85%的网站,有价值的文字继续“Velkommen”(=欢迎,在丹麦语)。珍贵!
问题
#1
我如何在我的剧本中具体说明,我只想抓住约。 360个字符,仅此而已。 OFC。这应该在Velkommen这个词之前(包括)。此外,脚本不应区分大小写(虽然Velkommen通常拼写为大写V,但它可以弹出另一个句子。)
此外,它应该是整个首页上最后出现的'velkommen',因为它有时会出现一个菜单/导航选项,这会很糟糕,因为我会抓住导航选项。
#2
目前,我的脚本将信息保存在多个数组中,然后保存在数据库中。
不确定我该如何做到这一点。 SEO的最佳选择;
这是一个示例网站和我当前的脚本:
$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]);
}
感谢所有能够解决这个难题的人,来自这个美妙的丹麦国家。
答案 0 :(得分:2)
尝试这样的事情:
<?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]);