Compare commits

...
47 Commits
Author SHA1 Message Date
Martin Angers 401642b253 Update readme to prepare for 1.12 release 2026-03-15 12:26:31 -04:00
Martin Angers afd9326761 Merge pull request #540 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.52.0 2026-03-15 12:25:04 -04:00
dependabot[bot] f799f78b6e Bump golang.org/x/net from 0.50.0 to 0.52.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.50.0 to 0.52.0.
- [Commits](https://github.com/golang/net/compare/v0.50.0...v0.52.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.52.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-15 16:21:07 +00:00
Martin Angers 805d7b1d5c Update CI to 1.25 and 1.26 2026-03-15 12:19:53 -04:00
Martin Angers 7dc7e6463b Merge pull request #538 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.50.0 2026-02-13 10:10:41 -05:00
dependabot[bot] 3020ebb46d Bump golang.org/x/net from 0.49.0 to 0.50.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.49.0 to 0.50.0.
- [Commits](https://github.com/golang/net/compare/v0.49.0...v0.50.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.50.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 05:52:35 +00:00
Martin Angers ee4bcdb889 Merge pull request #537 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.49.0
Bump golang.org/x/net from 0.48.0 to 0.49.0
2026-01-17 10:29:26 -05:00
dependabot[bot] f3bc303dcb Bump golang.org/x/net from 0.48.0 to 0.49.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.48.0 to 0.49.0.
- [Commits](https://github.com/golang/net/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 07:22:25 +00:00
Martin Angers 0f22828bca Merge pull request #536 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.48.0
Bump golang.org/x/net from 0.47.0 to 0.48.0
2025-12-23 09:13:59 -05:00
dependabot[bot] 68de6a15bb Bump golang.org/x/net from 0.47.0 to 0.48.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.47.0 to 0.48.0.
- [Commits](https://github.com/golang/net/compare/v0.47.0...v0.48.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 05:05:12 +00:00
Martin Angers 8ef6c9c294 Merge pull request #535 from PuerkitoBio/dependabot/github_actions/actions/checkout-6
Bump actions/checkout from 5 to 6
2025-11-21 16:01:03 -05:00
dependabot[bot] ffba93fcef Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-21 05:20:57 +00:00
Martin Angers d3e3ce5663 Merge pull request #534 from PuerkitoBio/mna-prepare-1.11
Update readme for 1.11 release
2025-11-16 11:05:17 -05:00
Martin Angers 9841a36e8f Update readme for 1.11 release 2025-11-16 11:04:18 -05:00
Martin Angers 469d4eab16 Merge pull request #533 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.47.0
Bump golang.org/x/net from 0.43.0 to 0.47.0
2025-11-16 11:00:17 -05:00
dependabot[bot] a03654e5c2 Bump golang.org/x/net from 0.43.0 to 0.47.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.43.0 to 0.47.0.
- [Commits](https://github.com/golang/net/compare/v0.43.0...v0.47.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-16 15:58:30 +00:00
Martin Angers faf16ca2df Merge pull request #523 from PuerkitoBio/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-11-16 10:56:22 -05:00
Martin Angers 4c1c718c62 Update test matrix to run on Go 1.24 and 1.25 2025-11-16 10:54:17 -05:00
dependabot[bot] 62bfb673c9 Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 14:08:26 +00:00
Martin Angers e3142812ec Merge pull request #525 from PuerkitoBio/dependabot/github_actions/actions/setup-go-6
Bump actions/setup-go from 5 to 6
2025-09-04 10:07:26 -04:00
dependabot[bot] 0961921b55 Bump actions/setup-go from 5 to 6
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 11:22:17 +00:00
Martin Angers 695fbfd142 Merge pull request #522 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.43.0
Bump golang.org/x/net from 0.42.0 to 0.43.0
2025-08-08 11:27:15 -04:00
dependabot[bot] 91702e55ec Bump golang.org/x/net from 0.42.0 to 0.43.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.42.0 to 0.43.0.
- [Commits](https://github.com/golang/net/compare/v0.42.0...v0.43.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.43.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-08 05:10:58 +00:00
Martin Angers 37bfcfb2ff Merge pull request #520 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.42.0
Bump golang.org/x/net from 0.41.0 to 0.42.0
2025-07-11 09:55:20 -04:00
dependabot[bot] 2213b25d2b Bump golang.org/x/net from 0.41.0 to 0.42.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.41.0 to 0.42.0.
- [Commits](https://github.com/golang/net/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-11 05:32:37 +00:00
Martin Angers 26759cf6df Merge pull request #519 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.41.0 2025-06-07 10:51:20 -04:00
dependabot[bot] 01cff33869 Bump golang.org/x/net from 0.40.0 to 0.41.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.40.0 to 0.41.0.
- [Commits](https://github.com/golang/net/compare/v0.40.0...v0.41.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 05:24:15 +00:00
Martin Angers 250e47114e Merge pull request #518 from apocelipes/stringsreplaceall
Use strings.ReplaceAll to silence golangci-lint warnings
2025-05-23 09:47:45 -04:00
apocelipes 9ec8fd3fbf Use strings.ReplaceAll to silence golangci-lint warnings 2025-05-23 18:54:39 +08:00
Martin Angers 32ce829020 Merge pull request #517 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.40.0
Bump golang.org/x/net from 0.39.0 to 0.40.0
2025-05-08 09:43:27 -04:00
dependabot[bot] 8f996d0795 Bump golang.org/x/net from 0.39.0 to 0.40.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.39.0 to 0.40.0.
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 05:35:57 +00:00
Martin Angers 9c6a69cd4d Prepare for v1.10.3 2025-04-11 14:15:50 -04:00
Martin Angers 80f14c7111 Merge pull request #516 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.39.0
Bump golang.org/x/net from 0.38.0 to 0.39.0
2025-04-10 09:48:46 -04:00
dependabot[bot] 58dcec12a0 Bump golang.org/x/net from 0.38.0 to 0.39.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.38.0 to 0.39.0.
- [Commits](https://github.com/golang/net/compare/v0.38.0...v0.39.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.39.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-08 05:08:10 +00:00
Martin Angers aadb1cdadc Merge pull request #515 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.38.0
Bump golang.org/x/net from 0.37.0 to 0.38.0
2025-03-28 12:15:05 -04:00
dependabot[bot] 9cd3cf0815 Bump golang.org/x/net from 0.37.0 to 0.38.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.37.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.37.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-28 05:59:18 +00:00
Martin Angers fa93633a0f Merge pull request #514 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.37.0 2025-03-05 21:35:54 -05:00
Martin Angers 858507ff1b Run go mod tidy 2025-03-05 21:32:02 -05:00
dependabot[bot] 5c48549c05 Bump golang.org/x/net from 0.35.0 to 0.37.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.35.0 to 0.37.0.
- [Commits](https://github.com/golang/net/compare/v0.35.0...v0.37.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-06 02:27:30 +00:00
Martin Angers c2d1a0902f Merge pull request #512 from myxzlpltk/master
increase performance by migrating from bytes.Buffer to strings.Builder
2025-02-27 21:31:04 -05:00
Saddam Azy 3951e60495 increase performance by migrating from bytes.Buffer to strings.Builder 2025-02-27 08:48:50 +07:00
Martin Angers e8b5d743a8 Prepare for 1.10.2 2025-02-13 09:41:22 -05:00
Martin Angers a2ae60f048 Add go1.24 to test matrix 2025-02-13 09:35:55 -05:00
Martin Angers 6d0ed2a352 Merge pull request #510 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.35.0
Bump golang.org/x/net from 0.34.0 to 0.35.0
2025-02-13 09:34:32 -05:00
dependabot[bot] 86e3da86b2 Bump golang.org/x/net from 0.34.0 to 0.35.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.34.0 to 0.35.0.
- [Commits](https://github.com/golang/net/compare/v0.34.0...v0.35.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 05:55:08 +00:00
Martin Angers 4128600425 Merge pull request #505 from PuerkitoBio/dependabot/go_modules/golang.org/x/net-0.34.0
Bump golang.org/x/net from 0.33.0 to 0.34.0
2025-01-11 11:35:10 -05:00
dependabot[bot] 3db152488a Bump golang.org/x/net from 0.33.0 to 0.34.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.33.0 to 0.34.0.
- [Commits](https://github.com/golang/net/compare/v0.33.0...v0.34.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-07 05:25:05 +00:00
7 changed files with 40 additions and 34 deletions
+3 -3
View File
@@ -8,16 +8,16 @@ jobs:
test:
strategy:
matrix:
go-version: [1.23.x]
go-version: [1.25.x, 1.26.x]
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install Go
uses: actions/setup-go@v5
uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go-version }}
+9 -3
View File
@@ -24,9 +24,11 @@ Syntax-wise, it is as close as possible to jQuery, with the same function names
Required Go version:
* Starting with version `v1.10.0` of goquery, Go 1.23+ is required due to the use of function-based iterators.
* For `v1.9.0` of goquery, Go 1.18+ is required due to the use of generics.
* For previous goquery versions, a Go version of 1.1+ was required because of the `net/html` dependency.
* Starting with version `v1.12.0` of goquery, Go 1.25+ is required due to its dependencies.
* Starting with version `v1.11.0` of goquery, Go 1.24+ is required due to its dependencies.
* Starting with version `v1.10.0` of goquery, Go 1.23+ is required due to the use of function-based iterators.
* For `v1.9.0` of goquery, Go 1.18+ is required due to the use of generics.
* For previous goquery versions, a Go version of 1.1+ was required because of the `net/html` dependency.
Ongoing goquery development is tested on the latest 2 versions of Go.
@@ -46,6 +48,10 @@ Ongoing goquery development is tested on the latest 2 versions of Go.
**Note that goquery's API is now stable, and will not break.**
* **2026-03-15 (v1.12.0)** : Update `go.mod` dependencies, add go1.26 to the test matrix, **goquery now requires Go version 1.25+**.
* **2025-11-16 (v1.11.0)** : Update `go.mod` dependencies, add go1.25 to the test matrix, **goquery now requires Go version 1.24+**.
* **2025-04-11 (v1.10.3)** : Update `go.mod` dependencies, small optimization (thanks [@myxzlpltk](https://github.com/myxzlpltk)).
* **2025-02-13 (v1.10.2)** : Update `go.mod` dependencies, add go1.24 to the test matrix.
* **2024-12-26 (v1.10.1)** : Update `go.mod` dependencies.
* **2024-09-06 (v1.10.0)** : Add `EachIter` which provides an iterator that can be used in `for..range` loops on the `*Selection` object. **goquery now requires Go version 1.23+** (thanks [@amikai](https://github.com/amikai)).
* **2024-09-06 (v1.9.3)** : Update `go.mod` dependencies.
+4 -4
View File
@@ -1,15 +1,15 @@
package goquery
import (
"bytes"
"fmt"
"strconv"
"strings"
"testing"
)
func BenchmarkMetalReviewExample(b *testing.B) {
var n int
var buf bytes.Buffer
var builder strings.Builder
b.StopTimer()
doc := loadDoc("metalreview.html")
@@ -27,12 +27,12 @@ func BenchmarkMetalReviewExample(b *testing.B) {
if score, e = strconv.ParseFloat(s.Find(".score").Text(), 64); e != nil {
// Not a valid float, ignore score
if n <= 4 {
buf.WriteString(fmt.Sprintf("Review %d: %s - %s.\n", i, band, title))
builder.WriteString(fmt.Sprintf("Review %d: %s - %s.\n", i, band, title))
}
} else {
// Print all, including score
if n <= 4 {
buf.WriteString(fmt.Sprintf("Review %d: %s - %s (%2.1f).\n", i, band, title, score))
builder.WriteString(fmt.Sprintf("Review %d: %s - %s (%2.1f).\n", i, band, title, score))
}
}
})
+2 -2
View File
@@ -2,7 +2,7 @@ module github.com/PuerkitoBio/goquery
require (
github.com/andybalholm/cascadia v1.3.3
golang.org/x/net v0.33.0
golang.org/x/net v0.52.0
)
go 1.23
go 1.25.0
+2 -1
View File
@@ -21,8 +21,9 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+10 -10
View File
@@ -1,7 +1,6 @@
package goquery
import (
"bytes"
"regexp"
"strings"
@@ -60,14 +59,14 @@ func (s *Selection) SetAttr(attrName, val string) *Selection {
// Text gets the combined text contents of each element in the set of matched
// elements, including their descendants.
func (s *Selection) Text() string {
var buf bytes.Buffer
var builder strings.Builder
// Slightly optimized vs calling Each: no single selection object created
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.TextNode {
// Keep newlines and spaces, like jQuery
buf.WriteString(n.Data)
builder.WriteString(n.Data)
}
if n.FirstChild != nil {
for c := n.FirstChild; c != nil; c = c.NextSibling {
@@ -79,7 +78,7 @@ func (s *Selection) Text() string {
f(n)
}
return buf.String()
return builder.String()
}
// Size is an alias for Length.
@@ -97,16 +96,16 @@ func (s *Selection) Length() int {
func (s *Selection) Html() (ret string, e error) {
// Since there is no .innerHtml, the HTML content must be re-created from
// the nodes using html.Render.
var buf bytes.Buffer
var builder strings.Builder
if len(s.Nodes) > 0 {
for c := s.Nodes[0].FirstChild; c != nil; c = c.NextSibling {
e = html.Render(&buf, c)
e = html.Render(&builder, c)
if e != nil {
return
}
}
ret = buf.String()
ret = builder.String()
}
return
@@ -168,7 +167,7 @@ func (s *Selection) RemoveClass(class ...string) *Selection {
} else {
classes, attr := getClassesAndAttr(n, true)
for _, rcl := range rclasses {
classes = strings.Replace(classes, " "+rcl+" ", " ", -1)
classes = strings.ReplaceAll(classes, " "+rcl+" ", " ")
}
setClasses(n, attr, classes)
@@ -192,8 +191,9 @@ func (s *Selection) ToggleClass(class ...string) *Selection {
for _, n := range s.Nodes {
classes, attr := getClassesAndAttr(n, true)
for _, tcl := range tcls {
if strings.Contains(classes, " "+tcl+" ") {
classes = strings.Replace(classes, " "+tcl+" ", " ", -1)
spaceAroundTcl := " " + tcl + " "
if strings.Contains(classes, spaceAroundTcl) {
classes = strings.ReplaceAll(classes, spaceAroundTcl, " ")
} else {
classes += tcl + " "
}
+10 -11
View File
@@ -1,8 +1,8 @@
package goquery
import (
"bytes"
"io"
"strings"
"golang.org/x/net/html"
)
@@ -26,13 +26,12 @@ var nodeNames = []string{
// Go's net/html package defines the following node types, listed with
// the corresponding returned value from this function:
//
// ErrorNode : #error
// TextNode : #text
// DocumentNode : #document
// ElementNode : the element's tag name
// CommentNode : #comment
// DoctypeNode : the name of the document type
//
// ErrorNode : #error
// TextNode : #text
// DocumentNode : #document
// ElementNode : the element's tag name
// CommentNode : #comment
// DoctypeNode : the name of the document type
func NodeName(s *Selection) string {
if s.Length() == 0 {
return ""
@@ -77,11 +76,11 @@ func Render(w io.Writer, s *Selection) error {
// because this is not a jQuery method (in javascript-land, this is
// a property provided by the DOM).
func OuterHtml(s *Selection) (string, error) {
var buf bytes.Buffer
if err := Render(&buf, s); err != nil {
var builder strings.Builder
if err := Render(&builder, s); err != nil {
return "", err
}
return buf.String(), nil
return builder.String(), nil
}
// Loop through all container nodes to search for the target node.