2016-06-08 89 views
0

考慮以下幾點:是否有可能用xpath在div下刮標籤?

<div class="name" data-starred-src="A Full Url" 
data-non-starred-src="Some Other URL" data-reorderid="SomeID" 
data-fbid="SomeID" id="SomeID" style="position: absolute; 
margin-top: 0px; margin-left: 0px;"> 

這是與一羣不同屬性的div元素。我想刮的東西是「data-starred-src」下的網址

是否可以在不使用整個HTML的情況下進行刮取?

試圖使用xpath和HtmlAgilityPack來做到這一點。

+0

'// DIV [@類= 「名稱」]/@數據出演-src' – splash58

回答

1

XPath能夠返回屬性,但HtmlAgilityPack似乎不支持直接返回屬性值。您可以嘗試先選擇包含目標屬性的元素,然後在元素上調用GetAttributeValue()以獲取實際屬性值例如:

var raw = @"<div class='name' data-starred-src='A Full Url' 
data-non-starred-src='Some Other URL' data-reorderid='SomeID' 
data-fbid='SomeID' id='SomeID' style='position: absolute; 
margin-top: 0px; margin-left: 0px;'></div>"; 

var doc = new HtmlDocument(); 
doc.LoadHtml(raw); 
var div = doc.DocumentNode.SelectSingleNode("//div[@data-starred-src]"); 
var url = div.GetAttributeValue("data-starred-src", ""); 
Console.WriteLine(url); 

dotnetfiddle demo

輸出:

A Full Url 
+0

嘗試這樣做,與OuterHtml工作得很好。謝謝! – Jomasdf

1

這將爲你工作。

response = """"<div class="name" data-starred-src="A Full Url" 
data-non-starred-src="Some Other URL" data-reorderid="SomeID" 
data-fbid="SomeID" id="SomeID" style="position: absolute; 
margin-top: 0px; margin-left: 0px;">""" 
response_sel = Selector(response) 
url = response_sel.xpath('//div[@data-starred-src]/@@data-starred-src') 
相關問題