How to use javascript in Golang to get a specific website elements or submit forms

huangapple go评论108阅读模式
英文:

How to use javascript in Golang to get a specific website elements or submit forms

问题

在Golang中,你可以使用github.com/headzoo/surf包来执行类似的操作。以下是一个示例代码,展示了如何使用Golang获取特定网站元素或提交表单:

package main

import (
	"fmt"
	"log"
	"net/url"

	"github.com/headzoo/surf"
)

func main() {
	bow := surf.NewBrowser()
	err := bow.Open("http://www.example.com")
	if err != nil {
		log.Fatal(err)
	}

	// 使用JavaScript填充值
	err = bow.RunScript(`example.value = "test"`, nil, nil)
	if err != nil {
		log.Fatal(err)
	}

	// 提交表单
	err = bow.SubmitForm("form[name='Form1']")
	if err != nil {
		log.Fatal(err)
	}

	// 获取JavaScript返回的数据
	result := bow.Find("body").Text()
	fmt.Println(result)
}

请确保在运行代码之前,你已经安装了github.com/headzoo/surf包。你可以使用以下命令进行安装:

go get github.com/headzoo/surf

这段代码使用了surf包来模拟浏览器行为,打开指定的网站,执行JavaScript代码,提交表单,并获取返回的数据。你可以根据自己的需求进行修改和扩展。

英文:

I used Qt before Golang, I can use javascript in Qt like this:

QWebView* view = new QWebView(parent);
view->load(QUrl("http://www.example.com"));
QString cmd("example.value = \"test\""); //using javascript to fill value
view->page()->mainFrame()->evaluateJavaScript(cmd);

QString cmd2("document.forms[\"Form1\"].submit()");//using javascript to submit a Form
QVariant result = view->page()->mainFrame()->evaluateJavaScript(cmd2);
qDebug() << result.toString(); //get javascript return data

How can I use javascript in Golang to get a specific website elements or submit forms.

答案1

得分: 2

你可以使用Go到JavaScript的编译器gopherjs来在Golang中使用JavaScript。

你可以在tidwall/digitalrain项目中看到一个例子,其中digitalrain.go文件访问了HTML元素。

js.Global.Get("document").Get("head").Call("appendChild", sheet)
js.Global.Get("document").Set("title", "whoa")

(为了一个很棒的效果

英文:

> How can I use javascript in Golang

You can use gopherjs, a compiler from Go to JavaScript.

You can see an example in the tidwall/digitalrain project, where the digitalrain.go file access html elements

js.Global.Get("document").Get("head").Call("appendChild", sheet)
js.Global.Get("document").Set("title", "whoa")

(for a great effect)

答案2

得分: 1

如果你喜欢在Go中运行JS代码,可以尝试使用Otto(https://github.com/robertkrimen/otto),它是一个用Go编写的JS虚拟机,非常强大。

英文:

If you like to run JS code in Go, try Otto (https://github.com/robertkrimen/otto), it's a JS VM written in Go and very powerful.

huangapple
  • 本文由 发表于 2015年2月8日 14:15:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/28391179.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定