2012-06-18 18 views

Odpowiedz

20

Standardowy pakiet Go do parsowania HTML jest nadal w toku i nie jest częścią bieżącej wersji. Trzecim pakietem, który możesz wypróbować, jest go-html-transform. Jest aktywnie utrzymywany.

+1

Nie mogę znaleźć przykładu w jaki sposób korzystać z tej biblioteki do skrobania i nie jest to oczywiste z dokumentów. Czy ktokolwiek może wskazać mi przykład? – kristaps

+0

Czy planowane jest włączenie tego pakietu natywnie w programie Go? – Kiril

+1

Pakiet HTML jest już dostępny. Przeczytaj dokumentację tutaj: https://godoc.org/golang.org/x/net/html – R4chi7

17

Podczas gdy pakiet Go do parsowania HTML nadal trwa, jest on dostępny w repozytorium go.net.

Jego źródła są pod code.google.com/p/go.net/htmlgithub.com/golang/net i jest aktywnie rozwijany.

Jest wspomniany w tym ostatnim numerze go-nuts discussion.


Należy zauważyć, że z Go 1.4 (grudzień 2014), jak już wspomniano w this answer, pakiet jest teraz golang.org/x/net (patrz godoc).

+2

Pakiet html Go przeniesiono do [go.net] (https://code.google.com/p/ go/source/browse? repo = net # hg% 2Fhtml) repo. [Tutaj] (http://godoc.org/code.google.com/p/go.net/html) to dokumentacja. – ctn

+0

@ctn dziękuję za aktualizację. Nie wiem, dlaczego Twoja zmiana została odrzucona: przywróciłem ją w odpowiedzi. – VonC

+0

Dzięki. Powiedzieli, że to za bardzo zmieni pierwotne znaczenie i zamiast tego lepiej zostawię komentarz. – ctn

6

Szukałem i znalazłem tam bibliotekę o nazwie Gokogiri, która brzmi podobnie jak Nogokiri dla Rubiego. Myślę, że projekt jest również active.

23

Jeśli znasz jQuery, pokochasz GoQuery.

Szczerze mówiąc, jest to najprostsze, najpotężniejsze narzędzie HTML, jakie znalazłem w Go, i jest oparte na pakiecie html w repozytorium go.net. (Okay, więc jest to wyższy poziom niż tylko analizator składni, ponieważ nie wystawia on surowych tokenów HTML i tym podobnych, ale jeśli chcesz coś zrobić z dokumentem HTML, ten pakiet pomoże.)

+0

To jest niesamowite. Wielkie dzięki. –

0

I właśnie opublikował oparty na zdarzeniach, oparty na zdarzeniach, oparty na zdarzeniach, zgodny z HTML 5.0 pakiet do analizowania dla Go. Można find it here

Oto przykładowy kod, aby wszystkie linki ze strony (ze elementami):

links := make([]string) 

parser := NewParser(htmlContent) 

parser.Parse(nil, func(e *HtmlElement, isEmpty bool) { 
    if e.TagName == "link" { 
     link,_ := e.GetAttributeValue("href") 
     if(link != "") { 
      links = appends(links, link) 
     } 
    } 
}, nil) 

kilka rzeczy, o których należy pamiętać:

  • te odpowiadają linki, a nie pełne adresy URL:
  • Dynamicznie generowane linki nie będą gromadzone
  • Istnieją inne linki, które nie są gromadzone (znaczniki META, obrazy, ramki iframe, itp.). Łatwo jest zmodyfikować ten kod, aby je zebrać.
Powiązane problemy