我看到很多與SO有關的問題的答案,但或者存在細微的差別,我無法克服,或者我可能無法重複所示的過程。DOM結構,通過屬性名稱/值獲取元素
我試圖完成的是使用CURL從Google+商業頁面獲取HTML,迭代HTML和業務的每個評論都會刮掉評論HTML以在非Google +網頁上顯示該業務。
每個評審股這個父DIV結構:
<div class="ZWa nAa" guidedhelpid="userreviews"> .....
因此我試圖基於尋找和抓住與屬性的每個格div和innerHTML來做到foreach循環:guidehelpid =「userreviews」
我成功地通過CURL獲取HTML,並可以在定位標準TAG名稱(如「a」)時解析它,或者如果它具有ID,但在查找屬性名稱時使用PHP默認解析器遍歷HTML時存在問題:
如何在下面使用這個成功的代碼,並使其按照第二代碼中顯示的意圖工作,當然這是錯誤的?
工作代碼(發現,獲取,回聲的一切 「一」 在$輸出標籤)
$url = "https://plus.google.com/+Mcgowansac/about";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
$DOM = new DOMDocument;
@$DOM->loadHTML($output);
foreach($DOM->getElementsByTagName('a') as $link) {
# Show the <a href>
echo $link->getAttribute('href');
echo "<br />";}
理論上所需的代碼:(查找自定義屬性每一個審查HTML和迴音它們)
$url = "https://plus.google.com/+Mcgowansac/about";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
$DOM = new DOMDocument;
@$DOM->loadHTML($output);
foreach($DOM->getElementsByTagName('div[guidehelpid=userreviews]') as $review) {
echo $review;
echo "<br />"; }
任何幫助我糾正這將不勝感激。如果沒有它,我不希望使用「simple_html_dom」。
而不是你的getElementsByTagName(「DIV [guidehelpid = userreviews]」),你就不能堅持所有的div在一個大陣列並超過他們迭代(推出自己的解決方案嗎?) - 或者你可以使用其中一種XQUERY類型的類(這就是你僞代碼試圖做的對吧?) – splig 2014-09-01 21:51:20
好吧,將頁面響應中的每個DIV粘貼到一個數組中,然後迭代數組看起來好像會大大增加腳本加載。也許我錯了,但似乎是非常低效。我會嘗試一下,看看它是如何工作的。 – DMSJax 2014-09-01 21:59:24
是的你是對的它會增加大量的服務器CPU /服務器負載 - 我最近沒有看過,但如果有一個本地的(如編譯的C)XQUERY庫,這將是理想的,因爲它會很好,快速並且效率很高,而且您可以完成您正在嘗試執行的那種查詢 – splig 2014-09-01 22:01:07