c# - 如何在c#中从网页中提取特定行
问题描述
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("https://www.google.com/search?q=" + "msg");
HttpWebResponse myres = (HttpWebResponse)myReq.GetResponse();
using (StreamReader sr = new StreamReader(myres.GetResponseStream()))
{
pageContent = sr.ReadToEnd();
}
if (pageContent.Contains("find"))
{
display = "done";
}
目前此代码所做的是检查 url 上是否存在“find”,如果存在则显示完成我想要的是显示包含“find”的整行或 para。
所以就像 display="done" 我想存储包含 find 的行显示
解决方案
HTML 页面没有行。标签外的空白被忽略,整个缩小页面可能根本没有换行符。即使这样做了,换行符即使在标签内也会被忽略。这就是为什么<br>
有必要。如果要查找特定元素,则必须使用HTMLAgilityPack之类的 HTML 解析器,并使用 XPath 或 CSS 选择器表达式识别元素。
从登录页面示例复制:
var url = $"https://www.google.com/search?q={msg}" ;
var web = new HtmlWeb();
var doc = web.Load(url);
var value = doc.DocumentNode
.SelectNodes("//div[@id='center_col']")
.First()
.Attributes["value"].Value;
你放入什么SelectNodes
取决于你想找到什么。
测试各种表达式的一种方法是在浏览器中打开您想要的网页,打开浏览器的开发者工具并开始在元素检查器中搜索。那里的搜索功能接受 XPath 和 CSS 选择器。
推荐阅读
- html - 将用户输入中的文本添加到超链接
- android - Room - 将列表中的编辑保存到数据库设计问题
- swift - Swift 字符串包含 , 或 . 但不是两者
- php - pwa service worker 不导入脚本
- javascript - 在 React + NodeJS 上通过浏览器的 WebSockets
- github - 在github中,是否可以在分支和标签之间进行比较?
- json - Folium - 具有嵌套 JSON 的样式函数
- javascript - 带有身份验证的 XMLHTTP 请求
- java - 如何使用字符串中的元字符删除所有非字母字符,不包括空格?
- laravel - 在 laravel 集合中添加新元素以在 laravel 中建立友谊