Website Content Downloaden

Neue Frage »

Auf diesen Beitrag antworten »
redbull187 Website Content Downloaden

Meine Frage:
Hi,
die Verlage Oldenburg und Akademie Verlag bieten zurzeit die Möglichkeit, auf Ihrer Homepage all Ihre Bücher als pdf herunterzuladen.
http://www.degruyter.com/page/554
Wenn man ich ersten Absatz auf einen der beiden Links klickt, kann man auf der jeweiligen Webseite die Bücher herunterladen. Allerdings in Kapitel unterteilt, also 1 Buch ist in mehrere PDFS unterteilt.

Dies entwickelt sich zu einer ziemlichen Klickarbeit. Kann man nicht einfach irgendwie auf den Server und sich einfach alle Dateien herunterladen, um Sie dann später auszusortieren? Die Aktione geht nur bis zum 31ten.

Vielleicht hat ja jemand ne Idee...

MFG

Meine Ideen:
Hab mal versucht über FTP zu connecten, hat aber nicht funktioniert...
 
Auf diesen Beitrag antworten »
eulerscheZahl

Eine Möglichkeit, die Sache ein wenig schneller zu gestalten: das Firefox-Addon Firegestures: Halte die rechte Maustaste gedrückt, bewege die Maus nach unten, dann nach links, schon kommt der Speicher-Dialog.

Ich persönlich würde mir ein kleines Programm schreiben, mit C# geht der Webzugriff recht einfach, ich könnte dir dabei auch helfen.
Kannst du mal einen konkreten Link geben zu:
- Buchübersicht (der hier? Willst du die Bücher alle runterladen?)
- konkretes Buch mit Übersicht der einzelnen pdf-Dateien, ich finde da keinen Downloadlink.
Auf diesen Beitrag antworten »
redbull187

Hiho,

genau die Übersicht meine ich. Oben kann man noch die Option Oldenburg entfernen, dann hat man den kompletten Inhalt vor sich.
Wenn man nun auf ein Buch klickt, und dann auf "zum Content", kommt man z.B. auf diese Seite. Dort kann man dann auf die Kapitel klicken, und dann auf Download...

Mich interessieren eigentlich nur die Bücher aus der Rubrik Mathematik, Naturwissenschaften und Philosophie.

EDIT: Bei der Buchübersicht steht bei den Bücher dann "Zugang erworben" drunter, wenn man auf diese Zugreifen kann. Bei den Rubriken wo ich geschaut habe, trifft das auf etwa 99% zu...

So ein Programm wäre natürlich hilfreich, bin ich allerdings nicht allzu firm drinne. Ich hab eben mal einfach versucht mit wget die ganze Seite zu laden, aber das hat nicht gefruchtet ;-)
Auf diesen Beitrag antworten »
eulerscheZahl

Ist in Arbeit, ich muss nur noch den finalen Download schaffen, das Links sammeln für die einzelnen Kapitel habe ich schon.

Hast du das .Net Framework? Das ist bei Windows ab XP Servicepack2 enthalten. Ohne läuft mein Programm nämlich nicht.
 
Auf diesen Beitrag antworten »
redbull187

Hey super klasse,
ich nutzte Linux, hab aber nochn Windows Rechner hier rumstehen, also wenns mit WINE nicht läuft, auf dem Windows Rechner bekomme ich es ohne weiteres hin.
Vielen Dank
Auf diesen Beitrag antworten »
eulerscheZahl

So, fertig smile
Ist nicht wirklich komfortabel (wird mit ID gespeichert, statt mit Buchtitel, kann ich noch ändern, falls du willst)
Der Downloadordner muss existieren, habe da keine Abfrage mit erstellen drin.
Du hast im Programm einen Webbrowser, dort kannst du eine Übersichtsseite aufrufen (und die Zahl der angezeigten Titel auf 100 stellen), alle Titel der Seite werden heruntergeladen, kann je nach Leitung natürlich 'ne Weile dauern.

Kann das Programm nicht direkt anhängen, da zu groß; .rar ist hier leider nicht erlaubt.
Downloadlink: klick

Programmcode, falls du Angst vor Viren hast:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;

namespace Buchdownloader
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int zaehler = 0;            
            //Bücher auf Seite finden
            string code = webBrowser1.DocumentText.ToString();
            List<string> buecher = new List<string>();
            while (code.IndexOf("href=\"/view/product/") > 0)
            {
                code = code.Remove(0, code.IndexOf("href=\"/view/product/") + 20);
                string ID = code.Substring(0, code.IndexOf("?"));
                if (!buecher.Contains(ID))
                    buecher.Add(ID);
            }
            //Bücher durchgehen, Inhaltsverzeichnis aufrufen
            foreach (string ID in buecher)
            {
                //Kapitel in Buch finden
                WebClient wbc = new WebClient();
                string buchkapitel = wbc.DownloadString("http://www.degruyter.com/viewbooktoc/product/" + ID);
                List<string> kapitel = new List<string>();
                while (buchkapitel.IndexOf("<a href=\"/view/books/") > 0)
                {
                    buchkapitel = buchkapitel.Remove(0, buchkapitel.IndexOf("<a href=\"/view/books/") + 21);
                    string kapitellink = buchkapitel.Substring(0, buchkapitel.IndexOf("\""));
                    if (kapitellink.EndsWith(".xml") && !kapitel.Contains(kapitellink))
                        kapitel.Add(kapitellink);
                }
                //Kapitel herunterladen
                foreach (string downloadlink in kapitel)
                {
                    string downloadseite = wbc.DownloadString("http://www.degruyter.com/view/books/" + downloadlink);
                    downloadseite = downloadseite.Remove(0, downloadseite.IndexOf("href=\"/dg/viewbookchapter.fullcontentlink:pdfeventlink") + 6);
                    downloadseite = downloadseite.Remove(downloadseite.IndexOf("\">"));
                    downloadseite = "http://www.degruyter.com/" + downloadseite;
                    byte[] ziel = wbc.DownloadData(downloadseite);
                    File.WriteAllBytes(textBox1.Text + "\\" + ID + "_"+ (++zaehler).ToString() + ".pdf", ziel);
                }
                zaehler = 0;
            }
        }
    }
}
Auf diesen Beitrag antworten »
redbull187

Hey, funktioniert super 1A! Mit der ID ist schon in Ordnung, dass passt so. Mit dem Quellcode ist klasse, dann kann man auch mal nachvollziehen was denn so passiert.
Vielen vielen Dank. Ich hoffe das hat sich für dich auch gelohnt, und du kannst aus den Büchern auch nen Nutzen ziehen.
Auf diesen Beitrag antworten »
eulerscheZahl

Aus dem Bereich Mathematik/Naturwissenschaften werde ich mich wohl auch noch ein wenig bedienen, danke übrigens für den Hinweis auf das Angebot smile
Auch das Schreiben des Programms selbst hat mir etwas gebracht: jetzt weiß ich, wie man Dateien herunterlädt.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »