【问题标题】:Why does simplehtmldom kicks me out of loop with no error?为什么 simplehtmldom 将我踢出循环而没有错误?
【发布时间】:2013-08-01 14:15:57
【问题描述】:

我遇到了 simplehtmldom 的问题,我已将其追踪到此代码块。我有大约 70 个不同的 url 要抓取,但我的循环只经过两个。在第二次迭代中,file_get_html($url) 仅将页面的一部分返回到 $html。嵌入的 foreach 循环将运行并打印出部分页面,然后它会将我踢出两个循环,而不会击中最后一次打印。最奇怪的是它没有给出警告或错误。

foreach($urls as $url)
        {    
            $html = file_get_html( $url );
            $appList = $html->find("loc");
            foreach($appList as $each)
            {
                print "$each \n";
            }
            print "hello\n";

        }

请不要给出忽略第二个 $url 并继续下一次迭代的答案。我需要每一页上的所有信息

【问题讨论】:

  • 你的代码很好,AFAICT。也许这是一个特定于 URL 的问题?如果我可以问,您要解析哪个 URL?
  • 我不想给出网址,但它是 brothersoft.com/sitemap.php?pageno=2 这给了我外部循环通过 pageno1-77 的问题
  • 您是否开启了错误报告?
  • 什么是报告以及如何打开它?我假设这会给我我的隐形错误
  • 如果您从 url3 开始,它是否会做同样的事情并在 url4 中途死亡?可能会提供有趣的信息来确定是程序还是应该归咎于网址......

标签: php web-scraping simple-html-dom


【解决方案1】:

我通过使用普通的正则表达式和 curl 解决了这个问题。这是一个 xml 页面,所以

preg_match_all("@<loc.*?\/loc>@",$curlHTML,$locTags)

工作得很好,但我从来不知道 simple_html_dom 发生了什么

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多