2016-04-26 9 views
-2

lesen Da kann ich nicht youtube öffnen, wo ich jetzt bin, und ich will meine youtube Liste kratzen, ich den Inhalt der URL heruntergeladen haben:python txt Suppe Format

from bs4 import BeautifulSoup 
import urllib2 


url='https://www.youtube.com/playlist?list=PLYjSYQBFeM-zQeZFpWeZ_4tnhc3GQWNj8' 
page=urllib2.urlopen(url) 
soup = BeautifulSoup(page.read()) 
f1 = open("c:/exp/soup.txt", "w") 
f1.write(soup.prettify().encode('utf-8')) 

Erstens, ich kann es nicht lesen mit:

with open('C:/exp/soup.txt') as f: 
    lines = f.readlines() 
print lines 

Und dann weiß ich nicht, wie es zu einer Suppe Datei zu konvertieren: gedruckte

f1 = open("C:/exp/soup.txt", "r") 
f2=BeautifulSoup(f1) 
type(f2) 
print f2 

ich habe nichts.

Ich muss es wieder in eine Suppen-Datei konvertieren, damit ich die Datei weiter analysieren kann.

+0

Wenn "Zeilen drucken" nichts anzeigt, ist Ihre Datei leer –

Antwort

0

Sie können die Datei-ähnliches Objekt an den BeautifulSoup Konstruktor übergeben sollte:

with open('C:/exp/soup.txt') as f: 
    soup = BeautifulSoup(f, "html.parser") 

print(soup) 

Wenn Sie nichts gedruckt sehen, dann ist die C:/exp/soup.txt Datei leer ist.

0

Dies funktioniert:

url='https://www.youtube.com/playlist?list=PLYjSYQBFeM-zQeZFpWeZ_4tnhc3GQWNj8' 
from urllib.request import urlopen 
from bs4 import BeautifulSoup 
with urlopen(url) as link: 
    result = link.read() 
soup = BeautifulSoup(result) 
f1 = open("E:/soup.txt", "wb") 
f1.write(soup.prettify().encode('utf-8')) 

Lesen von Datei:

with open('E:/soup.txt','rb') as f: 
    lines = f.readlines() 
print(lines) 
##you get the whole html 

Drucken Suppe:

f1 = open("E:/soup.txt", "r") 
f2=BeautifulSoup(f1) 
type(f2) 
##<class 'bs4.BeautifulSoup'> 
print(f2) 
##prints the whole soup! 

Wenn im Fall, dass Sie eine Fehlermeldung angezeigt: „UnicodeEncodeError:‚charmap "Codec kann Zeichen nicht kodieren .." dann ist es wegen Ihres cmd, das nicht 'utf8' benutzt. Also in cmd Eingabeaufforderung: chcp 65001 und versuchen Sie es erneut.