我需要在我们页面的 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。
慕婉清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
}
注意:您可以做很多事情来优化您的代码,特别是查看您如何处理流阅读器。我会分块阅读并尝试匹配块。
- 2 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消