【问题标题】:Is there a way or a tool to automatically visit all pages of my site有没有办法或工具自动访问我网站的所有页面
【发布时间】:2012-03-30 14:23:31
【问题描述】:

我想自动访问/抓取我网站上的所有页面以生成缓存文件。有什么方法或工具可以做到这一点吗?

【问题讨论】:

  • 通常情况下,第一次访问页面的用户会生成缓存的内容 - 这种方法有什么问题?
  • 没问题,但是在我的数据库中有 13 到 20 个记录湖,但是当我打开任何产品时,它需要更多时间,如果任何用户来到我的网站并且他们觉得网站很慢,那么他为什么再来这就是为什么我想要任何工具至少访问一次所有链接,以便自动生成缓存文件。

标签: php caching web-crawler


【解决方案1】:

只需使用下载整个页面的任何机器人:

https://superuser.com/questions/14403/how-can-i-download-an-entire-website

例如 wget:

wget -r --no-parent http://site.com/songs/

【讨论】:

  • 嘿,我不想下载任何页面或整个网站。我想一次加载所有页面。
  • 如果你有所有要获取的 url 的列表,你可以使用 `--spider' 选项只下载每个 url 的标题。
【解决方案2】:

您可以使用wget 的递归选项来执行此操作。将example.com 更改为您的域:

wget --recursive --no-parent --domains=example.com --level=inf --delete-after

【讨论】:

    【解决方案3】:

    您使用 CMS 吗?你有你的页面列表吗?你可以编写一个简单的 PHP 循环来使用 CURL 或 php fopen() 加载所有页面

    $pages_ar = array(
        "http://mydomain.com/page1.htm",
        "http://mydomain.com/page2.htm",
        "http://mydomain.com/page2.htm",
    );
    
    foreach($pages_ar as $page)
    {
       fopen($page, "r");
    }
    

    基本但我希望你明白...

    【讨论】:

    • 您使用 CMS 吗?->没有,您有网页列表吗?->没有。我的页面网址是根据我的产品类别和类型从数据库自动创建的。我无法列出我的所有页面,因为生成了十万个网址。
    • 如果您的页面都在一个数据库中,那么创建 url 列表应该很容易......只需对您的数据库设置一个查询以创建页面列表并运行我建议的想法 -任务完成。由于您要做的就是点击每个页面以运行您的 web 脚本来创建缓存文件,这是一种简单的方法。
    【解决方案4】:

    surfen 的方法是正确的,但是如果你想要一个 php 解决方案,你可以查看 Symfony 2-s BrowserKit 组件,它可以作为一个独立的组件使用。

    https://github.com/symfony/BrowserKit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2017-02-17
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      相关资源
      最近更新 更多