2016-01-17 2 views
1

Как получить мои красивые выходные данные супа в текстовый файл?
Вот код;Как получить мои красивые выходные данные супа в текстовый файл?

import urllib2 

from bs4 import BeautifulSoup 

url = urllib2.urlopen("http://link").read() 

soup = BeautifulSoup(url) 

file = open("parseddata.txt", "wb") 

for line in soup.find_all('a', attrs={'class': 'book-title-link'}): 

print (line.get('href')) 

file.write(line.get('href')) 

file.flush() 

file.close() 
+0

'file.flush()' и 'file.close()' должен быть вне цикла for. – ozgur

ответ

2

file.close должен вызываться один раз (после цикла for):

import urllib2 
from bs4 import BeautifulSoup 

url = urllib2.urlopen("http://link").read() 
soup = BeautifulSoup(url) 
file = open("parseddata.txt", "wb") 
for line in soup.find_all('a', attrs={'class': 'book-title-link'}): 
    href = line.get('href') 
    print href 
    if href: 
     file.write(href + '\n') 
file.close() 

UPDATE вы можете использовать href=True, чтобы избежать if заявления. В дополнение к этому, используя with statement, вам не нужно, чтобы закрыть объект файла вручную:

import urllib2 
from bs4 import BeautifulSoup 


content = urllib2.urlopen("http://link").read() 
soup = BeautifulSoup(content) 

with open('parseddata.txt', 'wb') as f: 
    for a in soup.find_all('a', attrs={'class': 'book-title-link'}, href=True): 
     print a['href'] 
     f.write(a['href'] + '\n') 
+1

Вы не можете добавить None и строку, если .get возвращает None, вероятно, было бы лучше проигнорировать его вообще –

+0

@PadraicCunningham, я обновил ответ в соответствии с вашим комментарием. Спасибо. – falsetru

+1

Не беспокойтесь, вы также можете установить href = True –

0

Я просто сделать это:

with open('./output/' + filename + '.html', 'w+') as f: 
    f.write(temp.prettify("utf-8")) 

температура является HTML, который prased по BeautifulSoup.

+0

Работали красиво, спасибо Ребята! – max10

Смежные вопросы