我正在寫一個帶有Node的網頁抓取工具,並且正在考慮使用像Cheerio或JSDom這樣的模塊來將HTML解析爲DOM中的一組URL。但是,我有一個必要的特定功能。如何通過NodeJS中的值獲取元素的CSS選擇器?
我的目標是建立一個刮刀可颳去網站上的多個類似頁的信息,一些關鍵件。但是,我有一些包含這些信息的示例數據,我想使用它們爲這些頁面動態構建模型,然後使用該模型刮擦剩餘的網站。
爲了澄清,如果有一個網站三個頁面,每個包含一個不同的產品:
第1頁:
<html>
<body>
<h1>Product 1</h1>
<p>Desc</p>
<small>$2.05</small>
</body>
</html>
第2頁:
<html>
<body>
<h1>Product 2</h1>
<p>Desc</p>
<small>$8.05</small>
</body>
</html>
第3頁:
<html>
<body>
<h1>Product 3</h1>
<p>Desc</p>
<small>$5.07</small>
</body>
</html>
薩我已經有了第一個產品的數據(我知道產品名稱,說明和價格)。我想要使用第一頁獲取每個元素的選擇器,然後使用這些選擇器從其他頁面中抓取數據。
鑑於DOM中的標籤的內容,我怎麼能得到該元素的CSS選擇器?例如:
<html>
<body>
<h1>Hello world</h1>
</body>
</html>
我如何提供Cheerio/JSDom包含「Hello World」的字符串,並將它在該元素所在的DOM返回CSS選擇器?
是否有一個簡單的方法來做到這一點(包括使用另一個框架),或者是唯一的方式,通過整個DOM對象只是循環,並逐個檢查每個元素的值是多少?
將會有多個不同的XPath返回相同的節點列表。你想要哪一個?我假設'// * [text()='Hello world']'不是你想要的? – OrangeDog
你想知道什麼?正如你可以像XPath一樣簡單的// * [。 =「Hello world」]' – skAstro
我想要的是找到包含「hello world」元素的元素/路徑,以便稍後可以使用該路徑提取其他信息。基本上,我使用種子數據自動構建我的scraping模型。 –