2017-02-22 72 views
0

我有以下的HTML重複數次的網頁上(請不要判斷):的Python:從HTML中提取分隔文本與BeautifulSoup

<div class="container"> 
    <div class="image"> 
     <a href="#" title="#" class="#"> 
     <img src="img.jpg" alt="#" class="#"> 
     </a> 
    </div> 
    <div class="text"> 
     <a href="#"> 
      <h4 class="h4-class">{TITLE}</h4> 
     {SOME TEXT 1}<br /> 
     <h5><img src="img.jpg" alt="#" /> {SOME TEXT 2}</h5> 
     {SOME TEXT 3}  </a> 
    </div> 
    </div> 

我想提取{TITLE}{SOME TEXT 1}{SOME TEXT 2}{SOME TEXT 3}

我的代碼如下:

from BeautifulSoup import BeautifulSoup as bs 
import urllib2 
html = urllib2.urlopen('text') 
soup = bs(html) 
divs = soup.findAll("div", { "class" : "text" }) 

for div in divs: 
    inner_text = div.text 
    strings = inner_text.split("\n") 
    print strings[0] ## I want this to print just {TITLE} 

上打印出來,它打印一條線連接所有的t他認爲例如

{TITLE}{SOME TEXT 1}{SOME TEXT 2}{SOME TEXT 3}

反正是有解決這個?我錯過了什麼?

+0

我不認爲在給定的HTML代碼的任何'list_txt'。 – arsho

+0

在此處添加它時發生錯字。問題依然存在。 – pee2pee

回答

1

您可以prettifysee documentation here)div內容,然後根據需要操作每一行。如果類名爲text的div具有相同的結構,這將起作用。

代碼(Python的2):

from BeautifulSoup import BeautifulSoup as bs 

html = ''' 
<div class="container"> 
    <div class="image"> 
     <a href="#" title="#" class="#"> 
     <img src="img.jpg" alt="#" class="#"> 
     </a> 
    </div> 
    <div class="text"> 
     <a href="#"> 
      <h4 class="h4-class">{TITLE}</h4> 
     {SOME TEXT 1}<br /> 
     <h5><img src="img.jpg" alt="#" /> {SOME TEXT 2}</h5> 
     {SOME TEXT 3}  </a> 
    </div> 
    </div> 
''' 
soup = bs(html) 
divs = soup.findAll("div",{"class":"text"}) 
for div in divs: 
    pretty_div = div.prettify() 
    content_list = pretty_div.split("\n") 
    content_list = [s.strip() for s in content_list] 
    print content_list[3] 
    print content_list[5] 
    print content_list[9] 
    print content_list[11] 

輸出:

{TITLE} 
{SOME TEXT 1} 
{SOME TEXT 2} 
{SOME TEXT 3} 
+0

假設我想提取HREF,在這種情況下我該如何解決? – pee2pee

+0

您是否想僅提取'text'類的div內鏈接的'href'屬性值? – arsho

+0

是的......除了你已經捕獲的東西之外 – pee2pee