Frage

Ich bin mit urllib2 auf einer Seite zu lesen. Ich brauche eine schnelle regex auf der Quelle zu tun und ein paar Variablen herausziehen, aber urllib2 präsentiert als Dateiobjekt, anstatt ein String.

Ich bin neu in Python so bin ich kämpfen, um zu sehen, wie ich ein Datei-Objekt verwenden, dies zu tun. Gibt es einen schnellen Weg, um dies in eine Zeichenfolge zu konvertieren?

War es hilfreich?

Lösung

Sie können Python im interaktiven Modus, nach Lösungen zu suchen.

Wenn f ist Ihre Aufgabe, Sie können dir(f) geben alle Methoden und Attribute zu sehen. Es gibt eine namens read. Geben Sie help(f.read) und es sagt Ihnen, dass f.read() die Art und Weise ist eine Zeichenfolge aus einem Datei-Objekt abzurufen.

Andere Tipps

Aus dem doc file.read () (Hervorhebung von mir) :

  

file.read ([size])

     

höchstens Größe Bytes aus der Datei (weniger, wenn die Lese EOF trifft vor Größe Bytes zu erhalten) lesen. Wenn die Größe Argument negativ ist oder weggelassen wird, lesen Sie alle Daten, bis EOF erreicht ist. Die Bytes werden als String-Objekt zurückgegeben. Eine leere Zeichenkette zurückgegeben wird, wenn EOF sofort angetroffen wird. (Für bestimmte Dateien, wie ttys, macht es Sinn, weiter zu lesen, nachdem ein EOF getroffen wird.) Beachten Sie, dass diese Methode in dem Bemühen, die zugrunde liegende C-Funktion fread mehr als einmal nennen kann so nah an Größe Bytes wie möglich zu erwerben. Beachten Sie auch, dass, wenn in nicht-blockierenden Modus, weniger Daten als angefordert wurde zurückgegeben werden können, auch wenn keine Größenparameter gegeben wurde.

Beachten Sie, dass eine regexp Suche auf einem großen String-Objekt nicht effizient sein kann, und berücksichtigt dabei die Suche line-by-line, mit file.next () (ein Dateiobjekt ist eine eigene Iterator).

Michael Foord, aka Voidspace hat eine hervorragende Anleitung auf urllib2, die Sie hier finden: urllib2 - The Missing Manual

Was Sie tun, sollte ziemlich einfach sein, beachten Sie diesen Beispielcode:

import urllib2
import re
response = urllib2.urlopen("http://www.voidspace.org.uk/python/articles/urllib2.shtml")
html = response.read()
pattern = '(V.+space)'
wordPattern = re.compile(pattern, re.IGNORECASE)
results = wordPattern.search(html)
print results.groups()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top