为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
胡子哥哥 2021-11-28 16:29:00
我需要在我们页面的 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);    }但是,我需要如何正确搜索单词?
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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


查看完整回答
反对 回复 2021-11-28
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

要添加到上一个答案,您可以使用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

}

注意:您可以做很多事情来优化您的代码,特别是查看您如何处理流阅读器。我会分块阅读并尝试匹配块。


查看完整回答
反对 回复 2021-11-28
  • 2 回答
  • 0 关注
  • 252 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信