网页抓取时只返回一个值

时间:2016-04-03 16:00:58

标签: python dictionary nested-lists

* Ultra Beginner:

所以我试图抓一个网站并从该网站上删除博客标题。到目前为止,我已经设法拉出了列表,但是当我设置了一个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)

2 个答案:

答案 0 :(得分:1)

您可以使用列表理解打印标题,从字典列表中提取标题并打印它们:

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

您可以使用修剪来清洁"使用 strip()函数删除边界空格的标题:

print(title.strip())

答案 1 :(得分:0)

选项1:

如果您只想打印标题,请在for循环中使用:print(blog_title)

选项2(根据@craigsparks的答案):

如果您想存储所有标题&稍后打印它们,解析列表&只打印标题。

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