2016-08-14 4 views
0

Я беру данные с веб-сайта и записываю его в .txt-файл.TypeError при записи в файл .txt Python

head = 'mpg123 -q ' 
tail = ' &' 

url = 'http://www.ndtv.com/article/list/top-stories/' 
r = requests.get(url) 
soup = BeautifulSoup(r.content) 

g_data = soup.find_all("div",{"class":"nstory_intro"}) 
log = open("/home/pi/logs/newslog.txt","w") 
soup = BeautifulSoup(g_data) 

# Will grab data from website, and write it to .txt file 
for item in g_data: 
     shorts = textwrap.wrap(item.text, 100) 
     text_file = open("Output.txt", "w") 
     text_file.write("%s" % g_data) 

     print 'Wrote Data Locally On Pi' 
     text_file.close() 

     for sentance in shorts: 
       print 'End.' 
    #    text_file = open("Output.txt", "w") 
    #    text_file.close() 

Я знаю, сайт тянет правильную информацию, однако, когда я запускаю его в консоли, я получаю эту ошибку:

TypeError: 'ResultSet' does not have the buffer interface 

Я попытался озираясь на Google, и я видя это много для строк в TypeError: 'str' does not have the buffer interface между Python 2.x и Python 3.x. Я попытался реализовать некоторые из этих решений в коде, но он все равно продолжает получать ошибку 'ResultSet'.

ответ

1

ResultSet является тип вашего g_data:

In [8]: g_data = soup.find_all('div',{'class':'nstory_intro'}) 

In [9]: type(g_data) 
Out[9]: bs4.element.ResultSet 

Лучше использовать context manager для обработки открытых и закрывается автоматически.

Если вы просто хотите, чтобы написать текстовое содержание g_data в Output.txt, вы должны сделать это:

with open('Output.txt', 'w') as f: 
    for item in g_data: 
     f.write(item.text + '\n') 
Смежные вопросы