2009-12-01 19 views
31

Czy pyton ma żadnego sposobu pobierania całej strony HTML i jego zawartość (obrazy, CSS) do folderu lokalnego danego adresu URL. I aktualizowanie lokalnego pliku html w celu wybrania zawartości lokalnie.Pobierz stronę html i jego zawartość

Odpowiedz

29

można użyć modułu urllib pobrać poszczególne adresy URL, ale będzie to tylko zwrócić dane. Nie będzie analizować kodu HTML i automatycznie pobierać plików CSS i obrazów.

Jeśli chcesz pobrać stronę „całość”, trzeba będzie analizować HTML i znaleźć inne rzeczy, które trzeba pobrać. Możesz użyć czegoś takiego, jak Beautiful Soup, aby przeanalizować pobrany kod HTML.

This question ma przykładowy kod robiący dokładnie to.

6

Można użyć urlib:

import urllib.request 

opener = urllib.request.FancyURLopener({}) 
url = "http://stackoverflow.com/" 
f = opener.open(url) 
content = f.read() 
+2

To tylko wydaje się pobrać strony biorąc pod kody odpowiedzi HTTP konto; w rzeczywistości nie pobiera zasobów strony, chyba że czegoś brakuje. – bdeniker

8

Co szukasz jest narzędziem mirroring. Jeśli chcesz jeden w Pythonie, PyPI wymienia spider.py ale nie mam doświadczenia z nim. Inni mogą być lepsze, ale nie wiem - używam „wget”, który obsługuje getting the CSS i obrazy. To prawdopodobnie robi to, co chcesz (cytując z the manual)

pobierać tylko jedną stronę HTML, ale upewnij pewność, że wszystkie elementy potrzebne do strony, aby być wyświetlane, takie jak obrazami wbudowanymi i stylu zewnętrznego arkusze , są również pobierane. Ponadto należy upewnić się, że pobrane referencje strona pobrane linki.

wget -p --convert-links http://www.server.com/dir/page.html 
Powiązane problemy