2015-12-15 3 views
-1

Я пытаюсь очистить кучу данных переписи о моей области, начиная с одной ссылки, чтобы получить код справа. Сначала я хочу получить заголовок страницы и сохранить данные на странице в txt-файле, названном после заголовка.Неподдерживаемый тип операнда для%: 'file' и 'unicode'

Так, например, в этом случае Census Block 970900-1-001 in Cortland County, New York будет названием txt-файла. Однако, когда я пытаюсь сделать это с помощью метода % variable, он дает мне ошибку Unsupported operand type for %: 'file' and 'unicode'. Я понимаю сообщение об ошибке - мой вопрос в том, как я могу достичь функциональности, для которой я собираюсь, или это даже возможно?

Код, написанный до сих пор:

from bs4 import BeautifulSoup 
from urllib2 import urlopen 

links = ['http://www.usa.com/NY0239709001001.html'] 

def block(): 
    link = links[0] 
    html = urlopen(link) 
    soup = BeautifulSoup(html.read(),'lxml') 
    h1 = soup.find('h1').text 
    print(h1) 
    f = open('%s.txt','w') % h1 
    f.write(h1) 

Ожидаемый результат: Создание файла под названием Census Block 970900-1-001 in Cortland County, New York.txt

Фактический выход:

Unsupported operand type for %: 'file' and 'unicode' 

ответ

4

Я предполагаю, что вы хотите :

open('%s.txt' % h1, 'w')

т.е. вы хотите использовать строку форматирования для создания файла, чтобы перейти к open - Вы не хотите, чтобы открыть файл с именем '%s.txt'.

+0

D'Oh! Спасибо, @mgilson! – n1c9

+2

@ n1c9 - Происходит к лучшему из нас. Трюк заключается в том, чтобы научиться внимательно читать трассировку. Я не могу сказать, сколько часов в моей жизни я потратил впустую на отслеживание ошибок, которые было бы легко найти, если бы я только внимательно прочитал трассировку. , , – mgilson

2

Поместите % h1 внутри open():

f = open('%s.txt' % h1, 'w') 
Смежные вопросы