在 html 响应中搜索特定文本(ASP.NET Core)

我需要在我们页面的 html 中搜索特定单词。


我尝试使用 c# (asp.net core) 来做到这一点


我的观点是通过 js 从 View 中获取 url 和 word 进行搜索,如果存在单词则作为响应显示它,如果不存在,则显示 smth


我制作了获取页面html代码的方法。这是代码


 [HttpPost]

    public JsonResult SearchWord([FromBody] RequestModel model){



        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(model.adress);

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Stream receiveStream = response.GetResponseStream();

            StreamReader readStream = null;


            if (response.CharacterSet == null)

            {

                readStream = new StreamReader(receiveStream);

            }

            else

            {

                readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));

            }


            string data = readStream.ReadToEnd();

            string strRegex = model.word;


            response.Close();

            readStream.Close();

            return Json(data);

    }

但是,我需要如何正确搜索单词?


胡子哥哥
浏览 253回答 2
2回答

动漫人物

您将无法使用简单的模式匹配做很多事情,请查看这个非常经典的 - RegEx match open tags 除了 XHTML self-contained tags。如果你想做一些严肃的抓取,可以考虑使用一些网页抓取库,比如html-agility-pack。如果您只想搜索网页中的单个单词,无论是标记还是 CDATA 等,只需将所有字符连接到一个数组中并使用 string.Contains 或 Regex。

慕婉清6462132

要添加到上一个答案,您可以使用Regex.Match。就像是:string pattern = @"(\w+)\s+(strRegex)";// Instantiate the regular expression object.Regex r = new Regex(pattern, RegexOptions.IgnoreCase);// Match the regular expression pattern against your html data.Match m = r.Match(data);if (m.Success) {    //Add your logic here}注意:您可以做很多事情来优化您的代码,特别是查看您如何处理流阅读器。我会分块阅读并尝试匹配块。
打开App,查看更多内容
随时随地看视频慕课网APP