2012-05-31 46 views
1

我必须从http://www.bk.com/en/us/restaurant-locator/index.html?s=89165 读取响应。我已经使用下面的代码但没有得到所有的响应。提前致谢。使用HTTPWEBREQUEST从URL读取响应

protected void Page_Load(object sender, EventArgs e) 
{ 

    string sUrl = "http://www.bk.com/en/us/restaurant-locator/index.html?s=89165"; 
    XmlDocument rssDoc = new XmlDocument(); 
    XmlTextReader rssReader = new XmlTextReader(sUrl.ToString()); 

    WebRequest wrGETURL; 
    wrGETURL = WebRequest.Create(sUrl); 

    Stream objStream; 
    objStream = wrGETURL.GetResponse().GetResponseStream(); 
    StreamReader objReader = new StreamReader(objStream, Encoding.UTF8); 
    WebResponse wr = wrGETURL.GetResponse(); 
    Stream receiveStream = wr.GetResponseStream(); 
    StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8); 
    string content = reader.ReadToEnd(); 
    Response.Write(content); 
    } 

有没有人帮助让所有的数据显示在网页上?

回答

1

除非您的方法有特定的原因,否则我会使用webclient。

Console.Write("\nPlease enter a URI (for example, http://www.contoso.com): "); 
string remoteUri = Console.ReadLine(); 

// Create a new WebClient instance. 
WebClient myWebClient = new WebClient(); 
// Download home page data. 
Console.WriteLine("Downloading " + remoteUri);       
// Download the Web resource and save it into a data buffer. 
byte[] myDataBuffer = myWebClient.DownloadData (remoteUri); 

// Display the downloaded data. 
string download = Encoding.ASCII.GetString(myDataBuffer); 
Console.WriteLine(download); 

Console.WriteLine("Download successful."); 

以上示例直接来自MSDN文章。

http://msdn.microsoft.com/en-us/library/xz398a3f.aspx

+0

我必须找到page..i的地址值是做googlescrapper项目,我必须找到页面上的地址和DUP到数据库中。但在这里我不能得到地址值。即使地址值出现在网页上,它也显示为空白。它没有出现在响应中。你可以请执行此代码,并且很好地得到相同的东西 – Imran

1

首先,您需要解决您从网站下载的HTML的方式。

  1. 使用XMLDocument.Load方法并将它传递给要加载的文档的URL。
  2. 使用WebClient.DownloadString方法。

两者都会以大约3行的形式下载页面的文本,使上面的代码更加清晰。其次,您不能依靠第三方网站来创建有效的XML/XHTML代码,这意味着当您尝试使用XMLDocument解析内容时,它可能会失败。

第三,也许更重要的是,很多网站禁止您在此方法中“抓取”内容。你可能想仔细检查你是否被允许。

最后..如果您向我们提供关于您希望在该页面中找到的内容的想法,我们可能会为您提供更多帮助。

+0

我必须找到该页面的地址值..我在做googlescrapper项目,我必须在页面上找到地址并将其复制到数据库中。但在这里我不能得到地址值。即使它出现在网页上,我也显示为空白。请帮助! – Imran

+0

对您而言可能有用的是BK网站使用Web服务获取位置列表。 'http://www.bk.com/en/us/ restaurants/40.7143528/-74.0059731/15/5/restaurants.xml' - “40.7143528”和“-74.0059731”是你想要的区域的经度和纬度搜索,'15'是英里半径,我假设'5'是结果的最大数量。 – Gavin

+0

是的,我想要的地址值。考虑这个URL http://www.bk.com/en/us/restaurant-locator/index.html?s=89165 我想要的地址值例如。 2180东塞伦大道和7255东南大街..等 – Imran

0

这里试试这个代码...

  System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(_URL); 

     _HttpWebRequest.AllowWriteStreamBuffering = true; 


     // set timeout for 20 seconds (Optional) 
     _HttpWebRequest.Timeout = 20000; 

     // Request response: 
     System.Net.WebResponse _WebResponse = _HttpWebRequest.GetResponse(); 

     // Open data stream: 
     System.IO.Stream _WebStream = _WebResponse.GetResponseStream(); 
+0

对不起老兄!它不工作...我没有得到所有网页上提供的响应。你可以请检查一次,让我知道解决方案。谢谢! – Imran