首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中提取html的一部分

在c#中提取html的一部分
EN

Stack Overflow用户
提问于 2014-02-27 17:29:39
回答 1查看 2.3K关注 0票数 0

我想用class="list-2"提取html的一部分ul

代码语言:javascript
复制
<! DOCTYPE html>
<html>
    <title>Title</title>
    <body>
        <div>
            <ul class="list-1">
                <li class="item">1</li>
                <li class="item">2</li>
                <li class="item">3</li>
            </ul>
            <ul class="list-2">
                <li class="item">11</li>
                <li class="item">22</li>
                <li class="item">33</li>
            </ul>
            <ul class="list-1">
                <li class="item">111</li>
                <li class="item">222</li>
                <li class="item">333</li>
            </ul>
        </div>
    </body>
</html>

在这里,我从页面中提取所有html。

代码语言:javascript
复制
string url = Request.QueryString["url"];
WebClient web = new WebClient();
web.Encoding = System.Text.Encoding.GetEncoding("utf-8");
string html = web.DownloadString(url);

在这里,我可以删除代码,直到我的ul

代码语言:javascript
复制
html = html.Remove(0, html.IndexOf("<ul class=\"list-2\">"));

怎么才能从这个ul中得到代码?

提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-13 08:21:41

现在,2015年末,有更多的html解析器(和无头浏览器)可以做到这一点,解析器AngleSharp就是其中之一。

注意,当使用"WebClient“时,不会执行javascript。

此示例从字符串中提取标记(在本例中为"string“):

代码语言:javascript
复制
// --------- your code
string url = Request.QueryString["url"];
WebClient web = new WebClient();
web.Encoding = System.Text.Encoding.GetEncoding("utf-8");
string html = web.DownloadString(url);

// --------- parser code
var parser = new HtmlParser();
var document = parser.Parse(html);

//Get the tag with CSS selectors
var ultag = document.QuerySelector("ul.list-2");

// Get the tag's html string
var ultag_html = ultag.ToHtml();

此示例加载网页并提取标记:

代码语言:javascript
复制
// Setup the configuration to support document loading
var config = Configuration.Default.WithDefaultLoader();

// Load a web page
var address = "an url";

// Asynchronously get the document in a new context using the configuration
var document = await BrowsingContext.New(config).OpenAsync(address);

// This CSS selector gets the desired content
var cssSelector = "ul.list-2";

// Perform the query to get all tags with the content
var ultag = document.QuerySelector(cssSelector);

// Get the tag's html string
var ultag_html = ultag.ToHtml();

进一步阅读/下载:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22075908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档