如何将BeautifulSoup提取的文本转换为列表、字典或可迭代对象?
如何把BeautifulSoup提取的文本转换成列表/字典?
首先说下你代码里报错的原因:你在循环里写quotes = list(quotes)的时候,quotes这个变量还没被定义过,自然会报错啦。而且你的逻辑也没走对——应该先创建一个空列表,再把爬取到的每一条语录逐个加进去。
转换成列表的正确写法
先初始化一个空列表,然后遍历BeautifulSoup找到的每个quote元素,把文本内容提取出来添加到列表里就行:
from bs4 import BeautifulSoup import requests r = requests.get("http://www.great-quotes.com/quotes/category/Motivational") data = r.text soup = BeautifulSoup(data, 'html.parser') # 先初始化一个空列表 quotes_list = [] # 遍历每个quote元素,提取文本并加入列表 for quote in soup.find_all("span", class_="edit_body"): # 用.text.strip()去除文本前后的空格和换行符 quote_text = quote.text.strip() quotes_list.append(quote_text) # 现在quotes_list就是你想要的可迭代列表啦 print(quotes_list)
运行之后,quotes_list就会是像['quote1', 'quote2', 'quote3']这样的格式,完全可以遍历使用。
额外:转换成字典的写法
如果之后你需要把语录转成字典(比如给每条语录加个序号键),可以这么做:
# 用enumerate给每条语录加序号,从1开始 quotes_dict = {index + 1: quote for index, quote in enumerate(quotes_list)} print(quotes_dict) # 输出会是 {1: 'quote1', 2: 'quote2', ...}
这样不管是列表还是字典,都能满足你后续迭代处理的需求啦~
内容的提问来源于stack exchange,提问作者Drunk Codes
相关产品推荐
相关产品推荐

