2013-12-18 73 views
1

我完全是HTML敏捷包的新手,我如何使用C#中的HTML敏捷包來抓取這些內容(代理)。如何使用HTML敏捷包來抓取內容

我的代碼:

string url = "http://www.proxybase.de/"; 
     HtmlWeb web = new HtmlWeb(); 
     HtmlAgilityPack.HtmlDocument doc = web.Load(url); 
     var nodes = doc.DocumentNode.SelectNodes("//table[@border='0' and @cellspacing='0' and @cellpadding='0']"); 

     if (nodes != null) 
     { 
      foreach (HtmlNode item in nodes) 
      { 
       if (item != null) 
       { 
        string s = item.InnerText; 
        listView1.Items.Add(s); 
       } 
      } 
     } 
     else 
     { 
      MessageBox.Show("Nothing found"); 
     } 

的HTML看起來喜歡...

<table border="0" cellpadding="0" cellspacing="0"> 
<tbody> 
    <tr>...</tr> //Ignore first one 
    <tr> 
    <td>...</td> 
    <td style="padding-left:5px;border-left;1px solid #999;"> 123.45.678.90:80 </td> 
    <td style="padding-left:5px;border-left;1px solid #999;">...</td> 
    </tr> 
</tbody> 
</table> 

修訂

如何使用的SelectSingleNode選擇Ť有索引數組的數據?

回答

0
HtmlWeb hw = new HtmlWeb(); 
     hw.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"; 
     hw.PreRequest = new HtmlAgilityPack.HtmlWeb.PreRequestHandler(p.ProxyOnPreRequest); // this is proxy request 
     HtmlAgilityPack.HtmlDocument doc = hw.Load(openUrl); 

    public bool ProxyOnPreRequest(HttpWebRequest request) 
    { 
     WebProxy myProxy = new WebProxy("203.189.134.17:80"); 
     request.Proxy = myProxy; 
     return true; // ok, go on 
    } 
1

我認爲你需要存儲的網站信息,如IP地址等成一個文件或數據庫

你就要成功了,如果上面是真的: 這應該解決這個問題:

string url = "http://www.proxybase.de/"; 
    HtmlWeb web = new HtmlWeb(); 
    HtmlAgilityPack.HtmlDocument doc = web.Load(url); 
    foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//td[@style='padding-left:5px;border-left;1px solid #999;'")) 
    { 
     String s = HtmlNode.InnerText; 
     //Now the IP address is stored in s. 
     //You can either put it in a file/database or a webpage :) 
    } 
+0

在您的示例中修復了一個錯字。它應該是'// td'而不是'// tr'。 –

+0

感謝編輯卡爾。 – RinikS