2013-12-10 21 views
1

我不能找到一種方式來獲得此跨度內的值:無法找到正確的正則表達式來獲得HTML標籤之間的值

    <span class="market_listing_price market_listing_price_with_fee"> 
      &#36;0.15 USD   </span> 

我試着用這樣的:

Regex regex = new Regex(@"<span class=""market_listing_price market_listing_price_with_fee"">(.*?)</span>"); 
Match match = regex.Match(result); 
string result = match.Groups[1].Value; 

但可能不匹配的標籤或符號......

+2

不要使用HTML ...正則表達式[壞事(http://stackoverflow.com/a/1732454/945456)發生... –

+0

HTML是不是一個正規的語言。你需要使用比正則表達式更多的東西。 –

+0

正則表達式對於單個值的「網頁抓取」目的來說是完全正確的。當頁面內容改變時,沒有HTML解析庫會有所幫助 – Adassko

回答

3

我同意上面的評論,你可能會喜歡使用html agility pack。這將允許您使用XPath選擇跨度的內容。

然後,您可以使用語法如

HtmlDocument doc = new HtmlWeb().Load(String.Format("http://sitecontainingspan.com")); 

var value = doc.DocumentNode.SelectSingleNode("//span[@class='market_listing_price market_listing_price_with_fee']").InnerText; 

這應該加載頁面,找到正確的類的跨度,並從中提取價值。

+0

你知道如何提高網頁的下載速度嗎?我有其他選擇嗎?謝謝。 – SubjectDelta

+0

我不知道如何做到這一點,但在解析它之前,您可能會將該頁面緩存爲本地HTML文件。 – MaxRev17

2

添加RegexOptions.Singleline參數爲您Regex構造

1

考慮到你的正則表達式以下微小的變化......

<span class=""market_listing_price market_listing_price_with_fee"">([\s\S]*?)</span> 

祝您好運!

0

您可以使用jQuery選擇跨度像這樣的內容:(「market_listing_price」) $文本() 您可以縮小它進一步基於文檔中的位置,也可以選擇所有。元素並操作它們。 結帳http://jquery.com/進一步的信息

相關問題