在PHP中抓取多个网站并在常用页面名称下保存内容

时间:2015-10-30 12:02:30

标签: php html database web-crawler scrape

我需要抓取多个网站(如100个不同的网站)并将其主页内容保存在数据库中。但问题并非所有网站都具有相同的结构和相同的链接文本。例如,一个站点可能具有“关于我们”,而另一个站点的相同内容可能位于名为“我们是谁”的页面下。因此,很难识别并列出一个数据库列中的常见内容。同样遍历100个或更多网站的内页并为每个页面保存抓取的数据并将它们放在公共列中变得更难以解决。 我该如何解决这个问题?我很感激能帮助我做到这一点的任何想法。 我正在使用PHP和cUrl来开发解决方案。

以下更明确的例子。

网站1链接 - 主页/关于我们/产品/联系我们

网站2链接 - 主页/我们是谁/服务/常见问题/联系

网站3链接 - 主页/我们的业务/我们的公司/联系我们

网站4链接 - 主页/注册/商店/我们在哪里

现在我希望以上链接自动分类如下,

关于我们专栏 - 关于我们,我们是谁/我们的公司

联系我们专栏 - 联系我们/联系我们/我们在哪里

产品列 - 产品/我们的工作

P.S。我更喜欢听到方法而不是编码示例。

3 个答案:

答案 0 :(得分:1)

呀。您可能需要构建一个机器人来用C,C#或C ++来完成它,并在一系列不同的例子中编写相同的东西。

看起来像这样:

switch (possiblenames)
{
    case About Us:
    ### Rest of Code
    break;
    case Who are we?:
    ### Rest of Code
    break;
}

答案 1 :(得分:1)

只需在您的网址列表中使用curl或wget,然后将整个数据存储到您的数据库中。 但是,如果您还想从存储的数据中显示页面,您还必须存储与页面相关的数据(css,js,images,...),因为Web浏览器会执行此操作"将页面保存为..."。

答案 2 :(得分:0)

不要搜索“关于”,“关于我们”,“我们是谁”等页面内容,而只需使用页面链接:<a href="about">,因为这些内容很可能比实际的链接文字:"About Us"

建立关键字列表,然后通过这些关键字过滤链接/网址...这可以帮助您更轻松地将它们放入正确的类别中。如果某些内容与您的关键字不匹配,请将其放入“待编辑”列表中。查看该内容,找出它所属的位置,然后将其添加到关键字列表中。