提取网页的HTML源代码

时间:2011-05-16 10:17:35

标签: c# html asp.net information-retrieval

我使用此代码提取网页htm源代码:

    private static string GetWebText(string url)
    {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.UserAgent = "A .NET Web Crawler";

        WebResponse response = request.GetResponse();

        Stream stream = response.GetResponseStream();

        StreamReader reader = new StreamReader(stream);
        string htmlText = reader.ReadToEnd();
        return htmlText;
    }

使用此代码后提取此页面的源代码(==>提取hrefs):

http://www.bayt.com/en/qatar/jobs/

当我有我的html源代码时,我没有找到很多内容,如: “成本优化顾问”

是因为它是服务器端生成的内容吗?

如何更改我的代码,以便它带来包含服务器端生成内容的html源代码?

2 个答案:

答案 0 :(得分:0)

当您查看源服务器端已完成并呈现时,它不太可能是服务器端原因。也就是说他们可能有脚本在加载完成后动态改变页面内容,如果它在加载完成后发生变化,并且所有内容最初都被渲染到原来呈现的内容,只要源不是之后的任何事情。有些浏览器能够跟上正在进行的渲染和操作,但是应用程序中的很多东西都会使浏览器这样做,这与JavaScript没有任何关系。

另一个看似合理的概念或2。他们在网站的某个地方内置了一些东西,用于某种XSS检测。如果引用脚本不在域本身上,那么它将看到他们想要的任何内容。或者..你的剧本正遭受“同源政策”的困扰,可能会把它弄糟。或者像其他人说你没有正确解析DOM。

您可以尝试在网站上的iframe中加载页面,然后获取iframe的innerHTML,然后将其转储到文件或其他内容中。

答案 1 :(得分:0)

他们可能只是根据浏览器ID(用户代理)字符串添加某些内容。

尝试将您的用户代理设置为此

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1