Seite 1 von 1
Webcrawling
Verfasst: Montag 23. Februar 2015, 11:04
von Padidem
Hallo!
Könnte mir jemand bei folgender Aufgabe weiterhelfen:
Rufen Sie die Online-Version des Shanghai Rankings, der Top 500 Universitaten auf. Machen Sie sich
mit der Struktur der Webseite vertraut. Crawlen Sie die Webseite und extrahieren Sie Daten fur alle
Jahre, von 2003 bis 2014. Geben Sie an, welche Entscheidungen Sie jeweils bezuglich der drei Schritte
des Webcrawlings (seed,crawl frontier und policy ) getroen haben und begrunden Sie diese
Vielen Dank

Re: Webcrawling
Verfasst: Montag 23. Februar 2015, 11:12
von BlackJack
@Padidem: Was ist denn jetzt das konkrete Problem?
Re: Webcrawling
Verfasst: Montag 23. Februar 2015, 11:13
von EyDu
Na klar, dass Vorgehen ist eigentlich ganz einfach, du musst nur folgendes tun:
Rufe die Online-Version des Shanghai Rankings, der Top 500 Universitaten auf. Mache dich
mit der Struktur der Webseite vertraut. Crawle die Webseite und extrahiere Daten fur alle
Jahre, von 2003 bis 2014. Gib an, welche Entscheidungen du jeweils bezuglich der drei Schritte
des Webcrawlings (seed,crawl frontier und policy ) getroen hast und begrunden diese.
Hier wird sicher keiner deine Aufgaben für dich erledigen. Wie lauten denn deine konkreten Fragen zum Problem? Wie sieht dein bisheriger Code aus? Was für Gedanken hast du dir schon gemacht und was hast du ausprobiert und das Problem zu lösen?
Re: Webcrawling
Verfasst: Montag 23. Februar 2015, 11:53
von Padidem
Das Problem ist dass ich die URL nicht öffnen kann mit:
Code: Alles auswählen
import urllib2
response = urllib2.urlopen('http://shanghairanking.com/de')
html = response.read()
kommt folgender Output:
Code: Alles auswählen
Traceback (most recent call last):
File "<ipython-input-14-ee84a4abc301>", line 2, in <module>
response = urllib2.urlopen(seed)
File "C:\Users\User\Anaconda\lib\urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "C:\Users\User\Anaconda\lib\urllib2.py", line 404, in open
response = self._open(req, data)
File "C:\Users\User\Anaconda\lib\urllib2.py", line 422, in _open
'_open', req)
File "C:\Users\User\Anaconda\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Users\User\Anaconda\lib\urllib2.py", line 1214, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "C:\Users\User\Anaconda\lib\urllib2.py", line 1184, in do_open
raise URLError(err)
URLError: <urlopen error [Errno 11004] getaddrinfo failed>
Re: Webcrawling
Verfasst: Montag 23. Februar 2015, 12:02
von BlackJack
@Padidem: Das glaube ich kaum denn im Quelltext steht eine literale Zeichenkette und im Traceback steht der Name `seed`. Bitte keine Code/Traceback-Kombinationen die gar nicht zusammengehören.
Du könntest die URL mal im Browser ausprobieren. Zumindest bei mir funktioniert die auch dort nicht.
Re: Webcrawling
Verfasst: Montag 23. Februar 2015, 12:11
von pillmuncher
Dafür funktioniert bei mir im Browser
http://www.shanghairanking.com.
Re: Webcrawling
Verfasst: Montag 23. Februar 2015, 12:15
von BlackJack
Jup, die funktioniert bei mir auch. Und auch die URL vom Link zur deutschen Seite die auf dieser Webseite zu finden ist.
Edit: @Padidem: Ich würde übrigens keine der beiden Seiten als Ausgangspunkt verwenden. Es gibt da eine Alternative die a) ”maschinenfreundlicher” ist und b) deutlich robuster ist was Änderungen am Websitedesign angeht (ein Grund für a)).
Re: Webcrawling
Verfasst: Mittwoch 25. Februar 2015, 13:49
von Padidem
Ich habe mir gedacht die Aufgabe mit der pandas.read.html Funktion zu erledigen und die Tabellen einzeln auszulesen, aber wie verbinde ich das dann mit dem seed, crawl frontier und policy?
Also für 2011 z.B. :
Code: Alles auswählen
import urllib2
import pandas as pd
response = urllib2.urlopen('http://www.shanghairanking.com/ARWU2011.html')
html = response.read()
df = pd.read_html(html)
Re: Webcrawling
Verfasst: Mittwoch 25. Februar 2015, 14:19
von BlackJack
@Padidem: Bei `seed` kann ich ja noch raten was das sein soll, aber „crawl frontier” und „policy”!? Ich denke mal Du sollst die Links zu den Seiten mit den Jahren nicht hart im Programm vorgeben sondern aus einer anderen Seite extrahieren. Da bräuchte man dann einen HTML-Parser der nicht nur mit Tabellen funktioniert.
Re: Webcrawling
Verfasst: Freitag 27. Februar 2015, 09:15
von Padidem
Kann mir jemand weiterhelfen?
Wie speichert man in Python Daten z.B. aus einer Tabelle (Pandas) in einem beliebigen Datenformat??
Danke
Re: Webcrawling
Verfasst: Freitag 27. Februar 2015, 09:19
von BlackJack
@Padidem: Die Frage ist jetzt nicht ernst gemeint oder? In einem *beliebigen* Datenformat? In dem man die entsprechenden Module verwendet für das *beliebige* Datenformat, und eventuell noch etwas (oder etwas mehr) eigenen Code ergänzt. Welche Module und welchen und wieviel eigener Code hängt davon ab welches *konkrete* Datenformat man in eine Datei schreiben möchte.
Re: Webcrawling
Verfasst: Freitag 27. Februar 2015, 11:06
von Padidem
wenn ich meinen Datenframe über csv speichern will:
Kommt die Meldung:
AttributeError: 'list' object has no attribute 'to_csv'
Wie kann ich das beheben?
Re: Webcrawling
Verfasst: Freitag 27. Februar 2015, 12:23
von Sirius3
@Padidem: Du hast keinen Datenframe, sondern eine Liste. Du hast also in Deinem Programm vorher etwas erzeugt, was Du nicht haben willst.