Jak pobrać wszystkie książki w języku angielskim z Gutenberg?

23

Muszę pobrać wszystkie ebooki Gutenberga, w formacie zwykłego tekstu (nie HTML) i tylko w języku angielskim.

Czy ktoś ma sugestie, jak je wszystkie pobrać z serwera Gutenberg?

Potrzebuję ich do przeprowadzenia badań językowych.

EugeneP
źródło

Odpowiedzi:

32

Zgodnie z informacjami o robotach Dostęp do naszych stron :

Dostęp robota do naszej witryny powinien pozostać ostatnim zasobem, gdy wszystko inne zawiedzie. Pamiętaj również, że strona internetowa projektu Gutenberg jest chroniona prawem autorskim.

Istnieje jednak nadzieja :

Lepsze alternatywy

  • Pobierz wersję offline witryny internetowej Project Gutenberg.
  • Pobierz wszystkie pliki ebook projektu Gutenberg.
  • Uzyskaj dane katalogu projektu Gutenberg.

I:

[...] Możesz pobrać wszystkie nasze eBooki w spakowanych plikach, kierując robota na stronę http://www.gutenberg.org/robot/harvest

[...] Rozpakowanie plików zip da kolejne 70 000 plików.

To jest przykład, jak uzyskać wszystkie pliki za pomocą wget:

wget -w 2 -m http://www.gutenberg.org/robot/harvest

[...] Jeśli chcesz tylko niektóre typy plików, powiedz:

wget -w 2 -m http://www.gutenberg.org/robot/harvest?filetypes[]=txt

[...] Jeśli chcesz tylko pliki w danym języku, powiedz:

wget -w 2 -m http://www.gutenberg.org/robot/harvest?langs[]=de

Więc zapytałbym:

wget -w 2 -m http://www.gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=en
Arjan
źródło
Czy istnieje sposób, aby powiedzieć wgetowi, aby ograniczył liczbę plików pobieranych podczas przeszukiwania (np. Pierwsze 100 napotkanych plików tekstowych)?
rohanbk
Ponadto, gdy w pliku tekstowym znajduje się wiele linków (bezwzględny uri, powiedz „ gutenberg.org/files/1.zip , gutenberg.org/files/2.zip ”, jaki parametr jest używany do zapewnienia takiego pliku tekstowego jako liczba linków do pobrania do WGET?
EugeneP
@rohanbk, możesz zobaczyć, co zostanie pobrane, przeglądając sam adres URL, na przykład gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=en To pokazuje, że jest on faktycznie paginowany, ale liczba plików na stronie nie jest stała . (Może na podstawie rozmiaru?) Tak więc, aby NIE powtarzać, zgodnie z instrukcją wget , możesz spróbować --level=0. Ale myślę, że lepiej pozwolić na przerwanie i ponowne uruchomienie: spróbuj --level 9999 --no-clobber, co pominie pliki, które już masz (zakładając, że nadal jesteś w tym samym folderze na dysku).
Arjan
1
@EugeneP, patrz --input-file instrukcja .
Arjan
@Arjan Czy istnieje sposób określenia przesunięcia na początku pobierania? Moje pobieranie zostało przerwane z kilku powodów i teraz wget zaczął sprawdzać pliki od pierwszej strony. Skorzystałem z -copcji, ale nadal. Podałem offset=xxxadres URL, który ma być dublowany, ale nadal jest pobierany z pierwszej strony.
user13107,
7

Możesz pobrać całą kolekcję książek angielskich i innych języków Gutenberga w jednym pliku ZIM, który jest bardzo skompresowany, a następnie można go otworzyć za pomocą Kiwix zarówno na komputerze, jak i na Androidzie. Angielskie książki mają 40 GB.

Nemo
źródło
brak klienta linuksowego dla kiwix
aquagremlin
@aquagremlin Uh? kiwix.org/wiki/Software#GNU.2FLinux Jest nawet zapakowany w niektóre dystrybucje.
Nemo
2
Przepraszam. bez snu i nie widziałem „innych systemów” pod dużym przyciskiem.
aquagremlin
czy to książka w formacie txt?
AD
@AD Nie jestem pewien, co masz na myśli. To tekst + obrazy w formacie HTML, zapakowane w ZIM, a nie w EPUB lub inny. Jeśli chcesz, możesz uzyskać z niego zwykły tekst, ale moja odpowiedź jest głównie dla osób, które wolą sformatowane książki itp.
Nemo
6

Chociaż wybrana odpowiedź jest poprawna, potencjalnie spowoduje dwa problemy:

  1. Może pojawić się błąd 403 odmawiający dostępu do paginacji przy założeniu, że pobierasz jako bot
  2. Istnieje możliwość, że zostaniesz wysłany do zewnętrznego lustra, co oznacza, że wgetpolecenie zakończy się niepowodzeniem, to rekursywne kontrole pobierania plików z zewnętrznego lustra.

Poniższe rozwiązanie rozwiązuje te problemy:

wget -H -w 2 -m http://www.gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=en \
--referer="http://www.google.com" \
--user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" \
--header="Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" \
--header="Accept-Language: en-us,en;q=0.5" \
--header="Accept-Encoding: gzip,deflate" \
--header="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" \
--header="Keep-Alive: 300"

Możesz zmienić ciąg znaków strony odsyłającej i klienta użytkownika, aby zapewnić odrobinę losowości.

Corey Ballou
źródło
5

ftp://mirrors.pglaf.org/mirrors/gutenberg-iso ma kilka dobrych opcji.

ftp://mirrors.pglaf.org/mirrors/gutenberg-iso/pgdvd042010.iso to plik o pojemności 8 GB, który powinien wystarczyć dla Twoich potrzeb.

Więcej informacji tutaj:

https://www.gutenberg.org/wiki/Gutenberg:The_CD_and_DVD_Project#Downloading_Via_FTP , daje wszystkie opcje pobierania archiwum, w tym FTP i BitTorrent.

David Airapetyan
źródło
1
Polecam użycie torrenta jako bardziej etycznej opcji (na tej samej stronie co trzeci link): gutenberg.org/wiki/... Jest bardziej etyczny, ponieważ mniej obciąża serwery Project Gutenberg. Prawdopodobnie jest też szybszy i bardziej skuteczny. Plus, polecają to ponad ftp. Jeśli używasz Linuksa, Transmission jest dobrym klientem do obsługi torrentów. To da ci tylko książki, które istniały na stronie w 2010 roku, ale wydaje się najlepszą opcją, gdy odpowiedź shadowhorsta nie działa.
Shule
3

Inną opcją jest świetne narzędzie na http://pgiso.pglaf.org/ .

  1. Wprowadź zakres identyfikatora (np. 1-10000)
  2. Wybierz żądane typy plików
  3. Wybierz języki, które chcesz uwzględnić
  4. Poczekaj na powiadomienie
  5. Ściągnij
Shadowhorst
źródło
2
Nie działając dla mnie, widzę tylko surowy php
Ernest
-4

Dlaczego nie wykorzystać wszystkich nadmiernie skomplikowanych i pokazanych powyżej umiejętności programowania i wiedzy, aby utworzyć prosty przycisk, który łączy wszystkie te działania i mówi „Pobierz wszystkie aktualne książki” - z zakładką opcji językowej po kliknięciu.

Jestem pewien, że większość użytkowników, którzy odwiedzają tę stronę, to kolekcjonerzy e-booków, a ręczne pobieranie niektórych książek na interesujące ich tematy jest w porządku dla 1 lub 2 książek. Ale ręczne tworzenie większej kolekcji jest męczące. Niemniej jednak, jeśli potrzebują tego do badań lub po prostu chcieliby posiadać ogromną cyfrową bibliotekę książek na własnym komputerze. Większość ludzi jest wyłączona i rozprasza się z dala od strony, gdy zdają sobie sprawę, że musi to być Kreator komputerowy, aby to zrobić. Tak więc przycisk „Pobierz wszystkie bieżące książki” przyniósłby korzyść stronie projektu i jej użytkownikom, a na pewno stworzy jeszcze więcej osób odwiedzających witrynę. W ten sposób wszyscy są szczęśliwi.

Ivan Stojanovski
źródło