gpt4 book ai didi

c# - 如何获取网页的文本?

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:07 24 4
gpt4 key购买 nike

有没有办法只获取网页的文本(来源)?我尝试使用两种方法:

Using WebRequest
WebRequest myWebRequest = WebRequest.Create("http://www.website.com/");
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(ReceiveStream, encode);
string html = readStream.ReadToEnd();
readStream.Close();
myWebResponse.Close();

如果请求的网页是静态的,这种方法很有效。但是,如果请求网页的内容仅在页面加载发生时生成,我就无法获得正确的源内容。

Using Web Browser
WebBrowser browser = new WebBrowser();
browser.ScrollBarsEnabled = false;
browser.ScriptErrorsSuppressed = true;
browser.Navigate(new Uri(http://www.website.com/));

这种方法每次都会提供正确的源内容,但会花费很多时间并且还会显示弹出窗口。此外,一些网站显示浏览器版本弹出窗口,甚至有些在 IE 中打开(我不想要)。

我的最终目标是在不打开浏览器或获取任何弹出窗口的情况下尽快获取网页的源内容。请让我知道我可以用来实现所需解决方案的任何可能方式。谢谢。

最佳答案

您似乎想要某种没有实际浏览器的浏览器功能。

为此存在许多工具,最突出的是 Selenium , 再加上 PhantomJS您将能够在没有物理浏览器开销的情况下启动功能齐全的浏览器。

然后您就可以执行类似的操作(Selenium 示例):

IWebDriver driver = new PhantomJSDriver();
driver.Navigate().GoToUrl("http://www.website.com");
string fullSource = driver.PageSource;

当使用基本的 HttpWebRequestWebBrowser 控件时,您很快就会遇到页面加载缓慢或 JS 过多以至于无法获取预期结果。

关于c# - 如何获取网页的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com