如何在 c 中从网页中提取特定行#

How to extract a specific line from a webpage in c#

提问人:yashash gupta 提问时间:8/27/2021 最后编辑:Panagiotis Kanavosyashash gupta 更新时间:8/27/2021 访问量:141

问:

 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”的整行或段落。

所以就像 display=“done” 一样,我想存储包含 find in display 的行

C# HTML 解析

评论

0赞 Panagiotis Kanavos 8/27/2021
HTML 页面没有行。外部空格标记将被忽略,整个缩小的页面可能根本没有换行符。即使这样做了,换行符也会被忽略,即使在标签中也是如此。这就是为什么是必要的<br>
0赞 Panagiotis Kanavos 8/27/2021
如果你想找到一个特定的元素,你必须使用一个HTML解析器,如AngleSharp或HTMLAgilityPack,并使用XPath或CSS选择器表达式来标识该元素

答:

1赞 Panagiotis Kanavos 8/27/2021 #1

HTML 页面没有行。外部空格标记将被忽略,整个缩小的页面可能根本没有换行符。即使这样做了,换行符也会被忽略,即使在标签中也是如此。这就是为什么是必要的。如果要查找特定元素,则必须使用 HTML 解析器(如 HTMLAgilityPack),并使用 XPath 或 CSS 选择器表达式标识该元素。<br>

从着陆页复制示例:

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 选择器。