【问题标题】:How do I crawl the websites that SimpleHTMLDom returns?如何抓取 SimpleHTMLDom 返回的网站?
【发布时间】:2012-07-07 19:01:34
【问题描述】:

我让 Simple HTML Dom 工作,但现在我希望它开始抓取它返回的 url,而不是抓取它已经抓取的 url。如何使用 PHP/MySQL/HTML 做到这一点?

<?php 
    include "/simple_html_dom.php";
    $target_url = "http://www.daparadise.com/";
    $html = new simple_html_dom();
    $html->load_file($target_url);
    foreach($html->find('a') as $link){
        echo $href->href."<br />";
    }
    $html -> clear();
?>

我已经查过了,但我似乎找不到任何关于搜索它返回的结果的信息。

【问题讨论】:

  • 太宽泛了,所以是针对特定的编程问题。
  • 我试图弄清楚如何抓取它返回的网址。我已经查过了,但我什么都不会。我正在努力弄清楚我该怎么做......

标签: php html dom


【解决方案1】:

您是否列出了特定页面的图像?你的代码就是这样做的。而且它不会爬行。对于爬取,您通常会寻找&lt;a&gt; 标签,获取src 属性,将其推送到堆栈或队列中,然后进一步爬取。


总体思路:

  • 队列 = 数组($curPage); //或使用堆栈进行深度优先搜索;你可以绕圈跑(循环)
  • 当队列不为空时:# 或任何更好的条件..
    • 弹出第一个元素。获取页面的 URL。
    • 检查该页面是否已经存在于数据库中;如果是这样的话:
      • (继续下一次迭代)//避免循环。
    • 使用您的 DOM 解析器解析出此页面。
    • 从此页面中获取您想要的任何详细信息并将其存储到您的数据库中
    • 查找所有&lt;a&gt; 标签。对于每个 &lt;a&gt; 标签,请执行以下操作:
      • 获取src属性
      • src 属性推送到队列中。
    • (继续)

【讨论】:

  • 我并没有真正弄清楚我正在尝试的主要事情。但我确实输入了它进入数据库的所有信息。我让它检查 url 是否已经在数据库中,如果没有,它将进入它。每天上午 12 点和下午 12 点,它都会重新抓取并添加更多到数据库中。
猜你喜欢
  • 2016-10-14
  • 1970-01-01
  • 2020-10-07
  • 2022-01-10
  • 1970-01-01
  • 2023-04-10
  • 2019-03-18
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多