我一直在努力學習如何使用XPath類型querys從這段視頻越往下:https://www.youtube.com/watch?v=632ql93H90gPHP - 挖一個Xpath查詢
雖然我已經開始稍稍明白了一切,我想採取這一點,並嘗試使用嵌套循環提取代碼來提取嵌套元素,然後對它們進行分類。我只是使用craigslist作爲例子,因爲他們在視頻中啓動它,並將其列在其「網站」網頁下。
我不得不重寫這個,因爲之前它有一個無限循環。現在,如果任何人知道寫這個更好的方式,我會喜歡輸入,但這是我的。
所有我一直在努力做的就是我的結果分爲以下格式....
國家 - 國家 - CityNameTEXT - CityNameHREF
當然cityNameHref = thelink城市的。
現在,現在我只是在用它的print_r具有內在的結果我市實際的上市,因爲從Craigslist的格式是..
<h1>CountryName</h1>
<div class="colmask">
<div>
<h4>StateName</h4>
<ul>
<li>
<a href="CityNameHREF">CityName</a>
</li>
<li>
<a href="CityNameHREF">CityName</a>
</li>
<li>
<a href="CityNameHREF">CityName</a>
</li>
<li>
<a href="CityNameHREF">CityName</a>
</li>
</ul>
</div>
</div>
正如你可以看到它的嵌套非常複雜的內部。我一直試圖堅持12個小時,試圖讓這個工作。這是我得到的最接近顯示UL節點值的實際城市名稱。但我沒有CLUE如何讓這些城市以上面列出的格式正確顯示。
現在到我的代碼...
$url = 'http://www.craigslist.org/about/sites';
$output = file_get_contents($url);
$doc = new DOMDocument();
libxml_use_internal_errors(true); //Supress Warnings for HTML5 conversion issue
$doc->loadHTML($output);
libxml_use_internal_errors(false); //Start Showing Errors
$xpath = new DOMXpath($doc);
foreach ($xpath->query('//h1') as $e)
{
$country = $e->nodeValue;
$list = array();
foreach ($xpath->query('//div[@class="colmask"]/div', $e) as $li)
{
$state = $li->nodeValue;
echo "<pre>";
$result = $xpath->query('//div[@class="colmask"]/div/ul', $e);
for ($i = 0; $i <= 10; $i++) //10 instead so it doesn't lag out
{
print_r($result->item($i)); //Displays the UL nodeValue
}
}
}
刪除我的評論爲@Duccydake使我更有意義;) – Wrikken 2014-11-23 22:18:28