2012-09-19 110 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'] 
相关问题