2011-06-27 14 views
15

Chcę zrobić kilka screen-scraping z Pythonem 2.7 i nie mam kontekstu dla różnic między HTMLParser, SGMLParser lub Piękną zupą.Parsowanie kodu HTML za pomocą Pythona 2.7 - HTMLParser, SGMLParser lub Beautiful Soup?

Czy wszyscy próbują rozwiązać ten sam problem, czy też istnieją z różnych powodów? Który jest najprostszy, który jest najbardziej solidny i który (jeśli jest) jest domyślnym wyborem?

Proszę również dać mi znać, jeśli przeoczyłem ważną opcję.

Edit: należy wspomnieć, że nie jestem szczególnie doświadczony w parsowania HTML i jestem szczególnie zainteresowany w którym dostanie mnie porusza najszybsza, z celem parsowania HTML na jednym konkretnym miejscu.

+1

Zrozumienie użycia xpath przy pomocy lxml z kilkoma dobrymi przykładami byłoby dobrym podejściem IMO. Wypróbuj te: http://lxml.de/tutorial.html i http://www.techchorus.net/web-scraping-lxml – Medorator

Odpowiedz

13

używam i polecam lxml i pyquery dla parsowania HTML. Miałem napisać skrobanie internetowej bot kilka miesięcy temu i od wszystkich popularnych alternatyw Próbowałem, w tym HTMLParser i BeautifulSoup, poszedłem z lxml i cukru składni z pyquery. Nie próbowałem jednak SGMLParser chociaż.

Dla tego, co widziałem, lxml jest mniej lub bardziej bogatą w funkcje biblioteką, a podstawowy rdzeń C jest dość wydajny w porównaniu z jego alternatywami. Jeśli chodzi o pyquery, bardzo podobała mi się jego składnia inspirowana jQuery, dzięki której nawigacja w DOM była przyjemniejsza.

Oto niektóre zasoby mogą okazać się przydatne w przypadku, gdy zdecydują się spróbować:

Cóż, to moje 2c :) Mam nadzieję, że to pomoże.

+0

Jak porównałbyś "lxml" i "HTMLParser" pod względem łatwości użycia, bez obaw o wydajność? –

+0

Cóż, myślę, że to zależy od twojego doświadczenia i gustu, ale osobiście uważam, że podejście do dokumentu lxml jest bardziej intuicyjne niż model oparty na strumieniu HTMLParser. Tak więc łatwiej jest użyć lxml, ale może nie do końca jestem w porządku, ponieważ po pierwszym porównaniu różnych bibliotek kilka miesięcy temu użyłem tylko lxml. – tishon

-4

Cóż, oprogramowanie jest jak samochody .... różne smaki na wszystko prowadzą!

Idź z BeautifulSoup (4).

+5

Oprogramowanie jest jak samochody. . . i dobrze jest wiedzieć, czy jesteś za kierownicą sedana, minivana, samochodu sportowego lub osiemnastego kołodzieja. Tak, wszyscy jeżdżą, ale mają inne cele i powinni być odpowiednio kierowani. –

6

BeautifulSoup w szczególności dotyczy brudnego HTML, jak w stanie dzikim. Parsuje każdą starą rzecz, ale jest wolna.

Bardzo popularnym wyborem w dzisiejszych czasach jest lxml.html, który jest szybki i może w razie potrzeby korzystać z BeautifulSoup.

1

Spójrz na Scrapy. Jest to framework Pythona przeznaczony specjalnie do złomowania. Dzięki niemu można łatwo wyodrębnić informacje, używając elementu XPath. Posiada również bardzo interesujące możliwości, takie jak definiowanie modeli skradzionych danych (aby móc eksportować je w różnych formatach), uwierzytelnianie i rekursywne śledzenie linków.

Powiązane problemy