我有這個PHP DOM網絡爬蟲,它工作正常。它提取提及的標籤以及從(外部)論壇站點到我的頁面的鏈接。使用DOM從外部網站選擇性提取數據PHP網絡爬蟲
但最近我遇到了一個問題。像
這是論壇數據的HTML ::
<tbody>
<tr>
<td width="1%" height="25"> </td>
<td width="64%" height="25" class="FootNotes2"><a href="/files/forum/2017/1/837880.php" target="_top" class="Links2">Hispanic Study Partner</a> - dreamer1984</td>
<td width="1%" height="25"> </td>
<td width="14%" height="25" class="FootNotes2" align="center">02/28/17 01:42</td>
<td width="1%" height="25"> </td>
<td width="8%" height="25" align="Center" class="FootNotes2">0</td>
<td width="1%" height="25"> </td>
<td width="9%" height="25" align="Center" class="FootNotes2">200</td>
</tr>
<tr>
<td width="1%" height="25"> </td>
<td width="64%" height="25" class="FootNotes2"><a href="/files/forum/2017/1/837879.php" target="_top" class="Links2">nbme</a> - monariyadh</td>
<td width="1%" height="25"> </td>
<td width="14%" height="25" class="FootNotes2" align="center">02/27/17 23:12</td>
<td width="1%" height="25"> </td>
<td width="8%" height="25" align="Center" class="FootNotes2">0</td>
<td width="1%" height="25"> </td>
<td width="9%" height="25" align="Center" class="FootNotes2">108</td>
</tr>
</tbody>
現在,如果我們考慮到上面的代碼(表數據)在網站上提供的唯一語句。如果我試圖用一個網絡爬蟲一樣提取它,
<?php
require_once('dom/simple_html_dom.php');
$html = file_get_html('http://www.sitename.com/');
foreach($html->find('td.FootNotes2') as $element) {
echo $element;
}
?>
它提取人與類名是內顯示爲「FootNote2」數據
現在,如果我想提取特定數據標籤,例如第一個標籤/行中的名稱,如「dreamer1984」和「monariyadh」。
以及如果我想從第3個數據中提取數據(跳過其餘的),它具有相同的類名稱。
請注意,我可以使用「正則表達式」像
preg_match_all('/<td.+?FootNotes2.+?<a.+?<\/a> - (?P<name>.*?)<\/td>.+?<td.+?FootNotes2.+?(?P<date>\d{2}\/\d{2}\/\d{2} \d{2}:\d{2})/siu', $subject, $matchs);
foreach ($matchs['name'] as $k => $v){
var_dump('name: '. $v, 'relative date: '. $matchs['date'][$k]);
}
但我更喜歡找到DOM解析器這種解決方案 任何幫助表示讚賞..
可能的重複[使用DOM PHP Web爬蟲從論壇網站中選擇數據提取](http://stackoverflow.com/questions/42511008/selective-data-extraction-from-forum-site-using-dom-php-網絡爬蟲) –
某些文本解析將是必要的(例如,通過正則表達式)我不認爲你可以避免這種情況。您可以做的最好的做法是將正則表達式位限制爲td元素的文本內容。 – apokryfos
@harishk檢查我的答案是你想要什麼? –