请考虑以下事项:
<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”
下的URL是否可以在不使用整个HTML的情况下进行此操作?
尝试使用xpath和HtmlAgilityPack执行此操作。
答案 0 :(得分: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
答案 1 :(得分: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')