我在抓这个页面:
http://kat.ph/search/example/?field=seeders&sorder=desc
这样:
...
curl_setopt( $curl, CURLOPT_URL, $url );
$header = array (
'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding:gzip,deflate,sdch',
'Accept-Language:en-US,en;q=0.8',
'Cache-Control:max-age=0',
'Connection:keep-alive',
'Host:kat.ph',
'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19',
);
curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19');
curl_setopt( $curl, CURLOPT_HTTPHEADER, $header );
curl_setopt( $curl, CURLOPT_REFERER, 'http://kat.ph' );
curl_setopt( $curl, CURLOPT_ENCODING, 'gzip,deflate,sdch' );
curl_setopt( $curl, CURLOPT_AUTOREFERER, true );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_TIMEOUT, 10 );
$html = curl_exec( $curl );
$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
@$dom->loadHTML( $html );
(不得不模仿浏览器使其工作,因此CURL )
但我仍然得到DOMNodes
类#text
,它只包含空白字符。
为什么会发生这种情况以及如何避免它的任何想法?
答案 0 :(得分:3)
看起来preserveWhiteSpace
属性只是 sets libxml2 XML_PARSE_NOBLANKS
标志,并不总是可靠的 this thread 建议。具体来说,在没有DTD的情况下解析时,在这种情况下,解析器在某些情况下保留空文本元素(主要是如果它们是其他非文本元素的兄弟)。
线程可能有点过时,但行为 still exists as described 。