2016-04-03 15 views
0

*超初心者はこちらです:は、ウェブスクレイピング時に1つの値を返すだけです。

私はサイトを掻き集めて、そのサイトからブログのタイトルを引き出そうとしています。これまでのところ私はリストを引き出すことができましたが、私がdict_listを設定したとき、私のコードはすべての10の代わりに最後のタイトルだけを引っ張ります。最後のものではなく10のタイトルをすべてどのように印刷しますか?

import requests 
import bs4 
import csv 
from bs4 import BeautifulSoup 

url = "http://www.stuffyoushouldknow.com/blog/" 

r = requests.get(url) 

content = r.content 

soup = bs4.BeautifulSoup(content, "html.parser") 

soup.findAll('div', {'class' : 'content'}) 


blog = soup.findAll('div', {'class' : 'content'}) 

blog_dict_list = [] 

for bloginfo in blog: 
    text = bloginfo.getText() 
    if len(text) > 0: 
     blog_title = text.split (".") [0] 
     read_more = text.split (".") [1] 
     d = {'blog_title' : blog_title, 'read_more' : read_more} 
     blog_dict_list.append (d) 
+0

問題が何ですか。テストされ、それは10タイトルすべてを取得し、 'read_more'はうまくいきます。 – Pythonista

答えて

1

あなたの辞書のリストからタイトルを抽出するために、リストの内包表記を使用して、それらを印刷することにより、単にタイトルを印刷することができます:

titles = [blog_dict['blog_title'] for blog_dict in blog_dict_list] 
for title in titles: 
    print(title) 

あなたはタイトルが境界を除去することにより、「クリーン」にトリムを使用することができますストリップ()機能付き空白

print(title.strip()) 
0

オプション1:

タイトルを印刷したい場合は、print(blog_title) forループを使用します。

オプション2(@craigsparksによって答えを1として):

あなたが後でそれらを印刷すべてのタイトル&を保存したい場合は

は、タイトルのみリスト&印刷を解析します。

titles = [blog_dict['blog_title'] for blog_dict in blog_dict_list] 
for title in titles: 
    print(title.strip()) 
関連する問題