PHP简单HTML DOM解析器在有效URL上返回false

Asc*_*hab 2 php html5 web-scraping

我正在尝试以下方法:

$url = 'https://www.tripadvisor.es/Hotels-g187514-Madrid-Hotels.html'

$ta_html = file_get_html($url);
var_dump($ta_html);
Run Code Online (Sandbox Code Playgroud)

它返回false,这是正常工作并正确获取html:

$url = 'https://www.tripadvisor.es/Hotels-g294316-Lima_Lima_Region-Hotels.html#ACCOM_OVERVIEW'
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是它有一个重定向,但我用curl检查了标题,它的200 ok,在两种情况下看起来都是一样的.可能发生什么?怎么解决?

这似乎是这个问题的重复: 简单的HTML DOM返回false也没有答案

Jim*_*Jim 11

看起来HTML DOM解析器失败了,因为HTML文件大小大于库的最大文件大小.当你调用file_get_html()它时,会根据它的MAX_FILE_SIZE常量进行文件大小检查.因此,在调用任何HTML DOM解析器方法之前,通过调用以下方法增加库使用的最大文件大小:

define('MAX_FILE_SIZE', 1200000); // or larger if needed, default is 600000
Run Code Online (Sandbox Code Playgroud)

另外,正如您发现的那样,您可以通过执行此操作来处理文件大小检查

$html = new simple_html_dom();
$html->load($str);
Run Code Online (Sandbox Code Playgroud)