阅读背景:

抓取网页源码 不完整

来源:互联网 
webclient 和httprequest 2中抓取方法都试过了。包括replace 
webclient 和httprequest 2中抓取方法都试过了。包括replace \0也替换过 。结果获取到的内容也不是网页的全部内容,跪求大神解答~ 谢谢

14 个解决方案

#1


这个是目标网址:https://www.thepaper.cn/newsDetail_forward_1554897

#2


已测试,没发现遗漏了什么呢

 string url = "https://www.thepaper.cn/newsDetail_forward_1554897";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
        string content = reader.ReadToEnd();
       // this.test.InnerHtml = content;
        reader.Close();
        responseStream.Close();

#3


引用 2 楼 Chinajiyong 的回复:
已测试,没发现遗漏了什么呢

 string url = "https://www.thepaper.cn/newsDetail_forward_1554897";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
        string content = reader.ReadToEnd();
       // this.test.InnerHtml = content;
        reader.Close();
        responseStream.Close();

试了下,content里面的内容显示不全,如下图:

#4



??

#5


引用 4 楼 Chinajiyong 的回复:

??

没明白~~

#6


哪里不全?我没看出来

#7


引用 6 楼 Chinajiyong 的回复:
哪里不全?我没看出来

看我上面截图,获取到的content 只有一部分,不应该是浏览器源码的所有内容吗?

#8


引用 7 楼 yan13641141502 的回复:
Quote: 引用 6 楼 Chinajiyong 的回复:

哪里不全?我没看出来

看我上面截图,获取到的content 只有一部分,不应该是浏览器源码的所有内容吗?

我测试出来是全的啊,你把源码赋给页面上一个div看看就知道全不全

#9


 试了下也显示不全  原网页上的继续阅读之类的都看不到。 而且网页内容down下来,我要用正则匹配内容。根本找不到。 用indexof也找不到。

#10


是不是原网页内容是ajax异步加载的,你抓取的时候内容还没有加载完成

#11


引用 10 楼 qq_28147821 的回复:
是不是原网页内容是ajax异步加载的,你抓取的时候内容还没有加载完成

跟ajax没有关系。谢谢~~

#12


服务器返回的数据流,可能是可查找,也可能是不可查找的,表现在 CanSeek 属性。

也可以查看响应头的 Transfer-Encoding,chunked 编码的都是不可查找的。

不可查找的数据流,不知道长度,需要另外的读取方法,不然就会无缘无故地丢了一段数据。

而且根据具体的读取方法,数据可能会丢,可能不会,丢失的部分也不完全一致。

#13


WebClient c = new WebClient();
c.Encoding = System.Text.Encoding.UTF8;//定义对象语言
string url = "https://www.thepaper.cn/newsDetail_forward_1554897";
String text = c.DownloadString(url);


                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream responseStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                string content = reader.ReadToEnd();
                // this.test.InnerHtml = content;
                reader.Close();
                responseStream.Close();


发现都不全,
            <div class="news_imgad"><iframe width="670" height="100" frameborder="0" scrolling="no" marginwidth="0" marginheight="0" src="https://ad.thepaper.cn/s?z=paper&c=1712&op=1"></iframe></div>
            <div class="news_txtad"><script type="text/javascript" src="http

辄然而止。。。

#14


已解决,在程序中使用WebBrowser 

也替换过 。结果获取到的内容也不是网页的全部内容,跪求大神解答~ 谢谢 webclient 和httprequest 2中抓取方法都试过了。包括replace&nbs



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: