2012-09-19 5 views
1

Мне нужна помощь, чтобы думать как программист.python: назначение частей строки переменным

Я использую beautifulsoup4 для захвата контента. Внутри тега p есть три строки. Первые два являются строками для дочерних тегов. Третий - это строка вкладки p. Это выглядит следующим образом:

<p> 
<a href="some stuff">First String</a> 
<br/> 
<a href="some stuff">Second String</a> 
<br/> 
Third String 
<br/> 
unimportant fourth string 
<br/> 
</p> 

Я хотел бы назначить каждую строку своей собственной переменной, но я не могу понять, как разделить их. Кажется, я должен иметь возможность разбивать на строки, а затем назначать каждую строку. Мой код в настоящее время выглядит так:

events=body.find_all('p') #find all the p tags 
for strings in events[3]: #get the first of the p tags i'm interested in 
    if strings.string: 
     all= str(strings.string).splitlines() #puts each string on its own line 
     for line in all: #shouldn't I be able to get each line by its index? 
      print line 

Что бы я ни пытался, я получаю все три строки. Я много часов пробовал разные вещи, и я надеюсь, что кто-то здесь сможет сказать мне правильный способ подумать об этом.

Благодаря

+3

HTML не символ новой строки с разделителями, так что вы не можете полагаться на разрывы строки, чтобы разобрать его. Вы должны получить текстовый узел для каждого элемента. – Keith

ответ

0
variable = {} # a dictionary 
variable_names = ['line-1', 'line-2', 'line-3', 'line-4'] 

events=body.find_all('p') 
for strings in events[3]: 
    if strings.string: 
     all= str(strings.string).splitlines() 
     for i,line in enumerate(all): 
      variable[variable_names[i]] = line 

     # test 
     print variable['line-1'] 
Смежные вопросы