Go - 从具有已知结构的文档中获取单个特定 HTML 元素的文本

在我正在编写的一个小脚本中,我向 Web 服务发出一个 POST 请求并接收一个 HTML 文档作为响应。除了单个textarea. 这textarea是textarea页面中唯一的,它有一个name我提前知道的特别之处。我想抓取该文本而不用担心文档中的任何其他内容。目前我正在使用正则表达式来获取正确的行,然后删除标签,但我觉得可能有更好的方法。


这是文档的样子:


<html><body>

<form name="query" action="http://www.example.net/action.php" method="post">

    <textarea type="text" name="nameiknow"/>The text I want</textarea>

    <div id="button">

        <input type="submit" value="Submit" />

    </div>

</form>

</body></html>

这是我目前获取文本的方式:


s := string(body)


// Gets the line I want

r, _ := regexp.Compile("<textarea.*name=(\"|')nameiknow(\"|').*textarea>")

s = r.FindString(s)


// Deletes the tags

r, _ = regexp.Compile("<[^>]*>")

s = r.ReplaceAllString(s, "")

我认为在这种情况下使用完整的 HTML 解析器可能有点太多了,这就是我朝这个方向前进的原因,尽管我知道那里有更好的东西。


我感谢您的任何建议。


倚天杖
浏览 202回答 2
2回答

桃花长相依

虽然这不是使用正则表达式解析 HTML的最佳实践。但如你所愿,这里是:(<textarea\b[^>]*\bname\s*=\s*(?:\"|')\s*nameiknow\s*(?:\"|')[^<]*<\/textarea>)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go