2016-07-23 35 views
0

我試圖通過轉到視頻網站來練習抓取,並在主頁上抓取視頻的所有標題。我唯一的問題是,如果標題太長,就會使用BeautifulSoup中的.string函數縮短。Python:美麗的湯:不能從解析中獲取完整的標題

下面是解析例如HTML:

<head>...</head> 
<body class="home"> 
    <div id="main"> 
     <div id="content"> 
      <div id="vid_28" class="thumb-block "> 
       <div class="thumb-inside">...</div> 
       <p> 
        <a href="/vid_28/0/this_is_a_great_video_" 
        title="this is a great video">this is a great vi...</a> 
       </p> 
      </div> 
     </div> 
    </div> 
</body> 

這裏是我試圖打印標題代碼:

import requests 
from bs4 import BeautifulSoup 

url = "example" 
r = requests.get(url) 

soup = BeautifulSoup(r.content, "lxml") 

links = soup.find_all("div", {"class":"thumb-block"}) 

for link in links: 
    for tag in link.find_all("a") 
     print(tag.string) 

此代碼工作,我怎麼想它,除了它的印刷字符串「這是一個偉大的vi ...」,這被縮短了。

如果您在HTML中注意到,「title =」之後的文本永遠不會被縮短。

如何修改我的代碼以獲取元素中「title =」後括號中的文本,而不是獲取被截斷的文本?

+1

那你爲什麼不訪問title屬性而不是'.string'? –

+1

這是因爲你試圖訪問字符串,在你的情況是「這是一個偉大的六...」,它正在打印。嘗試訪問標題屬性。 – ChaoticTwist

+0

我試圖用「tag.title」替換「tag.string」,它所做的只是在我的控制檯中返回「None」。我已閱讀文檔,但看不到任何指向如何調用除標題的實際標記之外的其他屬性的內容。 – Destroxia

回答

0

我已經想通了我的問題,我多次重新閱讀後發現它在文檔中。

如果你要打印的,我想「標題=」任何屬性,我不得不改變print(tag.string)print(tag['title'])

這是@Rawring和@ChaoticTwist建議第一,但我不知道是什麼他們通過訪問title屬性直到現在。

謝謝大家的時間。