2011-08-27 262 views
0

我已经使用this tutorial to fetch all the content of some webpage via c# code从网页获取一些数据

我现在要收集到IEnumerable集合所有这些都在下面的文本模式饰字符串:(即MY-TEXT)

data-address=" MY-TEXT "></ 

我怎么能这样做? 我尝试使用“string.split()”,但得到了许多“白色噪音”。

有什么想法?

+0

什么样的网页是什么?它是HTML(它没有任何'data-address'属性AFAIK)?还是XML? – svick

回答

4

更好的解决方案是使用HtmlAgilityPack并让它处理您的解析/抓取。下面是一个例子:

var web = new HtmlWeb(); 
var doc = web.Load("http://www.stackoverflow.com"); 

var nodes = doc.DocumentNode.SelectNodes("//[@data-address]"); 

foreach (var node in nodes) 
{ 
    Console.WriteLine(node.Attributes["data-address"].Value); 
} 

它将取出stackoverflow.com,发现其中有一个data-address属性的所有元素,然后打印该属性的值。

+0

几个问题:1)我得到以下错误:“表达式必须评估到一个节点集”。什么地方出了错? 2)你是如何得到这个开源DLL的?只是为了让我下次知道。 –

0

如果页面格式正确,我会将内容加载到XDocument中,并使用LINQ to XML对它进行查询。

+0

如果格式正确,您可能无法将HTML加载到“XDocument”事件中。 – svick

0

@alexn是对的。小幅回调,但:

var nodes = doc.DocumentNode.SelectNodes("//*[@data-address]"); 

加*