【问题标题】:Simple HTML DOM returning false [duplicate]返回 false 的简单 HTML DOM [重复]
【发布时间】:2016-02-09 15:50:44
【问题描述】:

在使用 Simple HTML DOM 解析具有特定查询字符串的网页时,我遇到了一些奇怪的事情。某些查询字符串在尝试解析经销商网站的此二手车页面时有效,但其他查询字符串无效。似乎每当页面上显示更多车辆时,它都不会返回 HTML 内容(这意味着如果我们在分页的最后一页它会工作,否则不会)。只是想知道是否有人有任何想法。我尝试在禁用 javascript 的情况下查看页面以查看标记是否不同,但页面的行为似乎相似。如果有人有任何想法,下面是代码......或者更好的解决方案。谢谢大家!

require ('simple_html_dom.php');
error_reporting(E_ALL);
$startingURL = 'http://www.buickgmcofmilford.com/VehicleSearchResults?model=&certified=&location=&miles=&maxPrice=&minYear=&maxYear=&bodyType=&search=preowned&trim=&make=&pageNumber=2';
$getHTML = file_get_html($startingURL);
if ($getHTML == true){
    echo '<h1>TRUE</h1>';
    var_dump($getHTML);
}
else {
    echo '<h1>FALSE</h1>';
    var_dump($getHTML);
}

当使用带有上述 URL 的 var_dump 时,它返回一个布尔值 false。使用以下 URL 时,我可以毫无问题地解析数据 - http://www.buickgmcofmilford.com/VehicleSearchResults?model=&certified=&location=&miles=&maxPrice=&minYear=&maxYear=&bodyType=&search=preowned&trim=&make=&pageNumber=5

谢谢。

【问题讨论】:

  • dom 对格式错误的 html 非常挑剔。您的浏览器能够显示它意味着什么都没有。b rowers 对糟糕的 html 非常宽容。 dom 不是。
  • @MarcB 任何你认为第二个 URL 似乎返回没有问题的原因,但第一个 URL 不能返回任何东西。似乎标记在两种情况下都是相同的......?
  • 您可以使用DOMDocument::loadHTML - 它会发出很多警告,但似乎有效。

标签: php html parsing simple-html-dom


【解决方案1】:

您不应该使用默认函数file_get_html 来获取远程内容,该函数使用file_get_content 来下载页面内容。有时目标网站会阻止用户代理或推荐人的请求。您可以先尝试PHP Curl 下载页面内容,然后使用simple_html_dom 解析它

【讨论】:

  • 即使使用 CURL 检索远程内容,我仍然只能解析该网站的某些 URL。我可以通过这个 URL link 获得我需要的信息,但不能通过这个 URL link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多