ZBLOG

go 读取html中js window.__GLOBAL_DADA的值

在 Go 语言中,你可以使用第三方库 goquery 来解析 HTML,并查找 JavaScript 代码中的 window.__GLOBAL_DATA 值。以下是一个示例代码:

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "github.com/PuerkitoBio/goquery"
  7. )
  8. func main() {
  9. resp, err := http.Get("http://example.com") // 替换为目标网页的 URL
  10. if err != nil {
  11. log.Fatal(err)
  12. }
  13. defer resp.Body.Close()
  14. doc, err := goquery.NewDocumentFromReader(resp.Body)
  15. if err != nil {
  16. log.Fatal(err)
  17. }
  18. var globalData string
  19. doc.Find("script").Each(func(i int, s *goquery.Selection) {
  20. scriptText := s.Text()
  21. if len(scriptText) > 0 && scriptContainsGlobalData(scriptText) {
  22. globalData = extractGlobalData(scriptText)
  23. return
  24. }
  25. })
  26. if globalData == "" {
  27. fmt.Println("未找到 window.__GLOBAL_DATA 的值")
  28. } else {
  29. fmt.Println("window.__GLOBAL_DATA 的值为:", globalData)
  30. }
  31. }
  32. // 判断脚本中是否包含 window.__GLOBAL_DATA
  33. func scriptContainsGlobalData(scriptText string) bool {
  34. return (len(scriptText) > 0 && (scriptText.Contains("window.__GLOBAL_DATA") || scriptText.Contains(`window['__GLOBAL_DATA']`)))
  35. }
  36. // 提取 window.__GLOBAL_DATA 的值
  37. func extractGlobalData(scriptText string) string {
  38. startIndex := strings.Index(scriptText, "window.__GLOBAL_DATA")
  39. endIndex := -1
  40. if startIndex >= 0 {
  41. startIndex += len("window.__GLOBAL_DATA")
  42. if strings.HasPrefix(string(scriptText[startIndex]), "=") || strings.HasPrefix(string(scriptText[startIndex]), ":") {
  43. startIndex++
  44. if startIndex < len(scriptText) {
  45. endIndex = strings.IndexAny(scriptText[startIndex:], "};,\n")
  46. if endIndex >= 0 {
  47. return strings.TrimSpace(string(scriptText[startIndex : startIndex+endIndex]))
  48. }
  49. }
  50. }
  51. }
  52. return ""
  53. }

请将代码中的 URL 替换为你想要获取的 HTML 页面地址。该示例使用 goquery 库来解析 HTML,并遍历所有 script 标签,检查其中是否包含 window.__GLOBAL_DATA,如果找到则提取其值。如果无法找到或提取失败,则会打印相应的消息。请注意根据具体情况进行调整和扩展。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18461

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?