2016-05-24 2 views
0

Я новичок в сборе данных. Это моя первая программа, которую я пишу на python, чтобы обмениваться данными и хранить их в текстовом файле. Я написал следующий код, чтобы отказаться от данных.Запись данных в текстовый файл с помощью скрипта python

from bs4 import BeautifulSoup 
import urllib2 
text_file = open("scrap.txt","w") 
url = urllib2.urlopen("http://ga.healthinspections.us/georgia/search.cfm?1=1&f=s&r=name&s=&inspectionType=&sd=04/24/2016&ed=05/24/2016&useDate=NO&county=Appling&") 
content = url.read() 
soup = BeautifulSoup(content, "html.parser") 
type = soup.find('span',attrs={"style":"display:inline-block; font- size:10pt;"}).findAll() 
for found in type: 
    text_file.write(found) 

Однако я запускаю эту программу с помощью командной строки, она показывает мне следующую ошибку.

c:\PyProj\Scrapping>python sample1.py 
Traceback (most recent call last): 
File "sample1.py", line 9, in <module> 
text_file.write(found) 
TypeError: expected a string or other character buffer object 

Что мне не хватает здесь, или есть что-нибудь, чего я не добавил. Благодарю.

+0

Прямо сейчас вы пишете элементы html, которые вы нашли. Чтобы получить строку, замените 'text_file.write (found)' на 'text_file.write (found.string)' – vds

ответ

0

Вам необходимо проверить, type is None, т.е. soup.find на самом деле не нашел то, что вы искали.

Кроме того, не используйте имя type, это встроенный.

find, очень похоже на find_all возвращает один или список Tag объект (ы). Если вы вызываете печать на Tag, вы видите строковое представление. Этот автоматизм isn; t вызывается на file.write. Вы должны решить, что attribute из found вы хотите написать.

+0

Спасибо за ответ, но если я удалю последние две строки кода и напишу тип печати и запустим его в cmd он дает мне вывод в командной строке, который в основном представляет собой массив, содержащий данные, которые я хочу получить. – Shaggie

+0

Также, если я делаю печать (найден) внутри цикла, он печатает данные на cmd, а затем почему не записывать в файл? – Shaggie

+0

Обновлено с дополнительной информацией о 'find' – renemilk