2016-11-09 61 views
1

我試圖從一個網站的源代碼中取消鏈接,該鏈接隨着每個源代碼的不同而不同。如何從源代碼中刪除變量數據?

形式例如:

<div align="center"> 
    <a href="http://www10.site.com/d/the rest of the link"> 
     <span class="button_upload green"> 

下一次我得到的源代碼http://www10更改任何http://www +數字,如http://www65

我該如何使用新更改的號碼報廢確切鏈接?

編輯: 下面是我如何使用RE MatchCollection m1 = Regex.Matches(textBox6.Text, "(href=\"http://www10)(?<td_inner>.*?)(\">)", RegexOptions.Singleline);

+0

你使用Html Parser嗎?像http://htmlagilitypack.codeplex.com/ – appl3r

+0

@ appl3r我用正則表達式,但使用它,我不得不手動輸入每個新的數字 –

回答

0

怎麼樣JS函數像這樣,在頁面加載時運行:

// jQuery is required! 

var updateLinkUrl = function (num) { 
    $.each($('.button_upload.green'), function (pos, el) { 
      var orig = $(el).parent().prop("href"); 
      var newurl = orig.replace("www10", "www" + num); 
      $(el).parent().prop("href", newurl); 
    }); 
}; 
$(document).ready(function() { updateLinkUrl(65); }); 
+0

我會嘗試它,但在代碼中的最後一行65是一個變量我不' t知道新的源代碼 –

+0

中存在的確切的新數字,第二次想到你的代碼是基於知道www後面的數字,我不知道我只給你一個例子 –

+0

我們如何知道數字? –

1

您在使用正規表達式解析意見所HTML文檔。這是你做這件事最難的方法(另外,一般不推薦!)。嘗試使用HTML解析器像http://html-agility-pack.net

對於HTML敏捷性包:你通過的NuGet Packeges安裝它,這裏有一個例子(公佈在其網站上):

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href]") 
{ 
    HtmlAttribute att = link["href"]; 
    att.Value = FixLink(att); 
} 
doc.Save("file.htm"); 

它也可以加載字符串內容,而不只是文件。您可以使用xPath或CSS選擇器在文檔內導航並選擇您想要的內容。

+0

好吧,這有點酷,但問題仍然在www後改變的數字cas。應用你的方式意味着它會取消所有的http鏈接,但我可以刪除字符串刪除除我的鏈接之外的所有靜態鏈接。將嘗試並回復您的感謝 –

+0

如果您使用WebClient client = new WebClient()提出請求,則您將獲得頁面的源代碼。您刮掉鏈接並存儲它們,您可以使用剛刮過的網址創建下一個WebClient請求。你幾乎每次都可以編寫一個選擇器來只選擇你需要的鏈接。 – appl3r

+0

我安裝了HTML敏捷包,但您的代碼顯示錯誤 我正在努力修復它們,謝謝 –