【发布时间】:2020-07-22 20:13:12
【问题描述】:
我有这样的 HTML 文档 我想 scrape 所有类别和子类别,我尝试使用 DOMXpath 进行抓取并加载文档 html,然后过滤类“css-1qaqbbz”(但只获取类别),这是我预期的数组这个
[
'Arsitektur & Desain' => [
“布库班古南”,
“Buku 代码和标准”
//等等...
],
]
<div>
<a class="css-1qaqbbz">Arsitektur & Desain
</a>
</div>
<div class="css-1wode1h">
<a data-testid="categoryNavigation#1" class="css-1nykm5o">Buku Bangunan</a>
<a data-testid="categoryNavigation#2" class="css-1nykm5o">Buku Codes & Standars</a>
<a data-testid="categoryNavigation#3" class="css-1nykm5o">Buku Dekorasi & Ornamen</a>
<a data-testid="categoryNavigation#4" class="css-1nykm5o">Buku Desain Dapur</a>
<a data-testid="categoryNavigation#5" class="css-1nykm5o">Buku Desain Kamar</a>
<a data-testid="categoryNavigation#6" class="css-1nykm5o">Buku Desain Ruang Keluarga</a>
<a data-testid="categoryNavigation#7" class="css-1nykm5o">Buku Desain Ruang Tamu</a>
<a data-testid="categoryNavigation#8" class="css-1nykm5o">Buku Desain Rumah</a>
<a data-testid="categoryNavigation#9" class="css-1nykm5o">Buku Interior & Eksterior</a>
<a data-testid="categoryNavigation#10" class="css-1nykm5o">Buku Metode & Material Bangunan</a>
<a data-testid="categoryNavigation#11" class="css-1nykm5o">Buku Taman</a>
</div>
<div class="css-1owj1eu" data-testid="catNavigation#2">
<div>
<a class="css-1qaqbbz">Buku Hukum</a>
</div>
<div class="css-1wode1h">
<a data-testid="categoryNavigation#1" class="css-1nykm5o">Buku Gender & Hukum</a>
<a data-testid="categoryNavigation#2" class="css-1nykm5o">Buku Hukum Dagang</a>
<a data-testid="categoryNavigation#3" class="css-1nykm5o">Buku Hukum Internasional</a>
<a data-testid="categoryNavigation#4" class="css-1nykm5o">Buku Hukum Perdata</a>
<a data-testid="categoryNavigation#5" class="css-1nykm5o">Buku Hukum Pidana</a>
<a data-testid="categoryNavigation#6" class="css-1nykm5o">Buku Kemanusiaan</a>
<a data-testid="categoryNavigation#7" class="css-1nykm5o">Buku Politik & Hukum</a>
<a data-testid="categoryNavigation#8" class="css-1nykm5o">Kumpulan Peraturan Perundang-Undangan</a>
<a data-testid="categoryNavigation#9" class="css-1nykm5o">UUD 1945</a></div>
</div>
这是我要抓取的源代码
$dom = new \DOMDocument;
$dom->loadHTML($f);
$xpath = new DOMXPath($dom);
$results = $xpath->query("//*[@class='css-1qaqbbz']");
if ($results->length > 0) {
echo "<pre>";
$arrCats = []
foreach ($results as $key => $value) {
$arrCats[] = $value->nodeValue;
}
// die;
}
【问题讨论】:
-
嗨,亲爱的 Roby,感谢这个很好的例子 - 我喜欢它的清晰结构!!
标签: php laravel dom xpath web-scraping