2015-01-27 1 views
1

У меня есть файл csv из нескольких десятков веб-страниц, которые я пытаюсь перекрыть.Python - Как экспортировать каждый элемент в список в отдельный текстовый файл

Целью является получение текста с веб-страницы, извлечение html-разметки (с использованием html2text), а затем сохранение чистого текста в виде файла .txt. Моя идея состояла в том, чтобы сохранить чистый текст каждой веб-страницы как элемент в списке, а затем экспортировать каждый элемент в список в файл txt.

Я могу заставить программу зациклиться на URL-адресах и вынуть html, но сохранение в отдельных файлах txt вызывает ошибку. Может ли кто-нибудь дать мне несколько идей о том, как это сделать?

Код:

from stripogram import html2text 
import urllib 
import csv 

text_list = [] 
urls = csv.reader(open('web_links2.csv')) 

for url in urls: 
    response = urllib.urlopen(url[0]) 
    html = response.read() 
    text = html2text(html) 
    text_list.append(text) 

print text_list 

for item in text_list: 
    f = open('c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w') 
    f.write(item) 
    f.close 
+0

Что ошибка броска, и где это происходит? –

ответ

-1

Я думаю, вы можете не захотеть добавить полный элемент в имя файла, так как элемент является всем html веб-страницы. В вашем случае я либо добавлю некоторую логику, чтобы дать ей аккуратное имя сайта, либо просто использовать индекс, чтобы вы могли перебирать его.

Также определение пути к файлу должно быть другим, попробуйте использовать двойные кавычки и \ вместо. Вы можете захотеть сделать что-то вроде этого:

i = 0 
for item in text_list: 
    i += 1 
    #also use format instead of the %s 
    f = open("c:\\users\\jacob\\documents\\txt_files\\{0}.txt".format(i), 'w') 
    f.write(item) 
    f.close() 
0

Похоже, что вы используете один и тот же значение (item) для обоих имен файлов и их содержимого, так что, если эти файлы не отдельные слова, вы, вероятно, генерируя нелегальную файл имена.

Плюс, для того чтобы позвонить close, вам необходимо предоставить круглые скобки.

0

Ваша главная проблема в том, что вы не спасаясь от t использовать сырые строки r:

open(r'c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w') 

\t является вкладка, так что используйте сырую строку, как в примере , двойной \\ или косые черты / в вашем пути к файлу.

In [11]: s = "\txt_files" 

In [12]: print(s) 
    xt_files 

In [13]: s = r"\txt_files" 

In [14]: print(s) 
\txt_files 


f.close <- missing parens to call the method 

использовать с, чтобы открыть вам файл и вещи, как забывая называть близко не будет проблемой:

with open(r'c:\users\jacob\documents\txt_files\%s.txt'%(item,), 'w') as f: # closes your files automatically 
    f.write(item) 
Смежные вопросы