* 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)
答案 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())