【问题标题】:How to extract a specific line from a webpage in c#如何在c#中从网页中提取特定行
【发布时间】:2021-10-27 05:36:03
【问题描述】:
 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”的整行或段落。

所以像 display="done" 我想将包含 find 的行存储在显示中

【问题讨论】:

  • HTML 页面没有行。标签外的空白被忽略,整个缩小页面可能根本没有换行符。即使这样做了,换行符即使在标签内也会被忽略。这就是为什么<br> 是必要的
  • 如果你想找到一个特定的元素,你必须使用像 AngleSharp 或 HTMLAgilityPack 这样的 HTML 解析器,并使用 XPath 或 CSS 选择器表达式来识别元素

标签: c# html-parsing


【解决方案1】:

HTML 页面没有行。标签外的空白被忽略,整个缩小页面可能根本没有换行符。即使这样做了,换行符即使在标签内也会被忽略。这就是为什么<br> 是必要的。如果要查找特定元素,则必须使用 HTML 解析器,如 HTMLAgilityPack,并使用 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 选择器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2022-11-18
    • 2011-11-19
    • 2011-08-05
    • 2016-01-11
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多