2017-02-25 61 views
0

打印項目:用Python給這個網站空的空間分隔

<div id="catwrap" class="categories"> 
    <a href="http://blahblahblahscience.com/category/electronic/" style="background-color:#006666">Electronic</a> 
    <a href="http://blahblahblahscience.com/category/track-reviews/" style="background-color:">Track Reviews</a>     
    <div class="clear"></div> 
</div> 

我用這個Beautifulsoup代碼以提取ElectronicTrack Reviews

tags = post.find('div', id='catwrap') 
for t in tags: 
    print t.get_text() 

它的工作原理,但數據就這樣產生了:

ElectronicTrack Reviews

我要如何插入一個for loop空間,所以它輸出:

Electronic Track Reviews

回答

0

你的問題是,你實際上沒有發現每個標籤 - 你只發現div包含標籤鏈接,並打印該容器內的文本(這將是鏈接的所有文本,但沒有之間的空間)。

爲了讓標籤本身,你需要做這樣的事情,而不是:

tags = post.find('div', id='catwrap')[0].find('a') 

然後你的循環將每個標籤運行一次,每次打印一個在新的一行。此刻並不是循環不會在迭代之間打印空間,問題在於只有一個迭代,並且get_text的輸出沒有空格。

0

你可以實現這一通過連接空間。

tags = post.find('div', id='catwrap') 
for t in tags: 
    print t.get_text() + " "  # this will concatenate a space at the end of each item 
2

你並不需要一個for循環,使用join

print(" ".join([t.get_text() for t in tags])) 
+0

如果他使用的是具有生成器表達式的Python版本,他也不需要列表。 – SwiftsNamesake

-1

Hmmmmm, 我通常做整個事情放在第一位。所以,如果是我這將是這樣的:

a = [] 
tags = post.find('div', id='catwrap') 
for t in tags: 
    a.push(t.get_text()) 
print a.join(" ") 

你認爲你會需要什麼?