使用HTML Agility Pack進行HTML Scraping

ajax c# html-agility-pack web-scraping

有人可以告訴我使用HTMLAgilityPack獲取內容的最佳方法,我在下面從html中提到。

在HTML提供我需要刮value的ID“IMG”的並設置值xy為他們在另一個函數來使用。

相關的HTML是

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

這些值將被發送到下面顯示的javascript中的函數

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

一些人可以通過告訴我應該怎樣繼續幫助我...

我編寫了以下代碼來獲取頁面的html數據

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

現在我已經知道瞭如何搜索參數,然後通過GET發送它們。

一般承認的答案

從您上面的示例代碼中提取到的位置,您可以抓住這樣的值

string imgValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"img\"]").GetAttributeValue("value", "0");
string xValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"x\"]").GetAttributeValue("value", "0");
string yValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"y\"]").GetAttributeValue("value", "0");

上面的第一個例子基本上是說找到類型為“input”的第一個節點,其“id”屬性等於“img”,並獲得它的“value”屬性的值。

然後只需附加到dest URL並發送Get Request,就像獲取初始HTML一樣。


熱門答案

我不會使用Html Agility Pack,因為我不知道如何將它反饋給原始網站。相反,我會使用WatiN 。 WatiN是為了驅動瀏覽器進行測試而設計的,但是當我不得不刮掉我無法控制的網站(例如Facebook或沃爾瑪)時,我發現它非常有用。缺點是它正在驅動一個實際的瀏覽器窗口,因此它不是你向用戶隱藏的東西。好處是,您可以輕鬆模擬鼠標點擊並形成字段文本條目。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因