小编use*_*876的帖子

Golang解析HTML,使用<body> </ body>标记提取所有内容

正如标题中所述.我需要返回html文档的body标签内的所有内容,包括任何后续的html标签等.我很想知道最好的方法是什么.我有一个使用Gokogiri软件包的工作解决方案,但是我试图远离任何依赖于C库的软件包.有没有办法用go标准库实现这一目标?或者100%的套餐?

自从我发布原始问题以来,我试图使用以下没有解决问题的软件包.(这两者似乎都没有从身体内部返回后续的孩子或嵌套标签.例如:

<!DOCTYPE html>
<html>
    <head>
        <title>
            Title of the document
        </title>
    </head>
    <body>
        body content 
        <p>more content</p>
    </body>
</html> 
Run Code Online (Sandbox Code Playgroud)

将返回正文内容,忽略后续<p>标记和它们包装的文本):

  • pkg/encoding/xml /(标准库xml包)
  • golang.org/x/net/html

最重要的目标是获取一个看起来像这样的字符串或内容:

<body>
    body content 
    <p>more content</p>
</body>
Run Code Online (Sandbox Code Playgroud)

html go

15
推荐指数
3
解决办法
3万
查看次数

Microsoft VS Code - 一次垂直跳转10行

我正在尝试使用Microsoft VS代码作为文本编辑器.目前我是一个崇高的用户,我配置为当我使用组合键OPT键+向上或向下时,能够垂直(向上或向下)跳10行.我想在VS Code上使用相同的功能,但无法找到在那里复制它的方法.有人可以概述我如何解决这个问题.谢谢.

附加信息:操作系统:OSX 10.13(High Sierra)

visual-studio-code

5
推荐指数
1
解决办法
2467
查看次数

Rails、ActiveRecord、PostgreSQL 使用正则表达式在字符串中搜索单词

我有一个使用 PostgreSQL 作为数据库的 Rails 4.1.x 应用程序。

我需要查询一列,以尝试在字符串的一部分上进行区分大小写的匹配,同时搜索单词的边界。正则表达式应该与 /keyword\b/i 内联,因此使用 %keyword% 不会削减它。我知道 postgres 支持正则表达式,但是我无法让它正常工作。我目前有以下内容:

Page.where("title ~* 'keyword/\b'").all
generages the following:
SELECT "pages".* FROM "pages"  WHERE (title ~* 'keyword')
Run Code Online (Sandbox Code Playgroud)

目前,这不会返回任何内容,即使我知道的记录包含“关键字”一词,我做错了什么?或者更确切地说,我该怎么做才能达到我的预期结果。

regex string postgresql ruby-on-rails rails-activerecord

4
推荐指数
1
解决办法
1425
查看次数

Golang在处理HTTP请求时无法将值推入"全局"通道

目前我正在开发一个可能需要几秒到1小时+才能处理的应用程序.因为这使用了一个阻止请求的通道,而其他人正在处理它似乎是一个很好的选择.以下是我想要完成的一个例子,但是我遇到了一个问题,因为在尝试将数据添加到所述频道时,我的程序似乎停滞不前(见下文).

package main

import (
    "net/http"

    "github.com/gorilla/mux"
)

type Request struct {
    Id string
}

func ConstructRequest(id string) Request {
    return Request{Id: id}
}

var requestChannel chan Request // <- Create var for channel

func init() {
    r := mux.NewRouter()
    r.HandleFunc("/request/{id:[0-9]+}", ProcessRequest).Methods("GET")
    http.Handle("/", r)
}

func main() {
    // start server
    http.ListenAndServe(":4000", nil)

    requestChannel = make(chan Request) // <- Make channel and assign to var

    go func() {
        for {
            request, ok := <-requestChannel

            if !ok{
                return
            }

            fmt.Println(request.Id)
        } …
Run Code Online (Sandbox Code Playgroud)

channel go

2
推荐指数
1
解决办法
3770
查看次数