2016-07-23 3 views
0

私はビデオのウェブサイトに行き、ホームページのビデオのすべてのタイトルを掻き集めることによって掻き傷を練習しようとしています。私の唯一の問題は、タイトルが長すぎる場合、BeautifulSoupの.string関数を使用して短くカットされてしまうことです。ここでPython:美味しいスープ:構文解析から完全なタイトルを取得できません

<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> 

私はタイトルを印刷しようとしていますコードされています:ここで

は、解析のための一例HTMLである、それは印刷だ以外

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

次に、 '.string'の代わりにtitle属性にアクセスするのはなぜですか? –

+1

これは文字列にアクセスしようとしているからです。あなたの場合は「これは素晴らしいviです...」という文字列にアクセスしようとしているためです。代わりにtitle属性にアクセスしてみてください。 – ChaoticTwist

+0

"tag.string"を "tag.title"に置き換えようとしましたが、私のコンソールには "None"が返されます。私はドキュメントを読んだことがありますが、タイトルの実際のタグの他に他の属性を呼び出す方法を指摘するものはありません。 – Destroxia

答えて

0

私は自分の問題を把握しましたが、ドキュメントを複数回読み返した後にドキュメントで見つけました。あなたは、私が「=タイトル」欲しかった任意の属性を印刷したい場合は

は、私が変更しなければならなかったprint(tag.string)

これは@Rawringと@ChaoticTwistは最初の提案するものであるが、私は確認されませんでしたprint(tag['title'])に何これまでtitle属性にアクセスしていました。

ありがとうございます。

関連する問題