1

我必须阅读来自http://www.bk.com/en/us/restaurant-locator/index.html?s=89165的回复 。我使用了以下代码但没有得到所有回复。提前致谢。

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);
   }

有没有人可以帮助所有数据出现在网页上?

4

3 回答 3

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

于 2012-05-31T09:01:28.813 回答
1

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

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

两者都将在大约 3 行中下载页面文本,从而使您的上述代码更清晰。

其次,您不能依赖第三方网站来创建有效的 XML/XHTML 代码,这意味着当您尝试使用 XMLDocument 解析内容时,它很可能会失败。

第三,可能更重要的是,许多网站禁止您使用这种方法“抓取”内容。您可能需要仔细检查您是否被允许。

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

于 2012-05-31T09:01:51.597 回答
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();
于 2012-05-31T10:17:02.963 回答