如何提取通过class选中的BeautifulSoup元素中的文本?
解决BeautifulSoup提取纯文本的问题
你用find_all拿到的是匹配到的Tag对象列表,每个对象包含完整的HTML标签结构,要提取里面的纯文本,直接调用Tag对象的.text或者.get_text()属性就行。
两种处理方式:
遍历
find_all返回的列表,逐个提取文本item_store = soup.find_all("div", {"class": "item-name"}) # 提取所有匹配元素的文本 item_texts = [item.text for item in item_store] # 或者带去空格的版本 item_texts_stripped = [item.get_text(strip=True) for item in item_store]如果只需要第一个匹配的元素,用
find更高效item = soup.find("div", {"class": "item-name"}) if item: # 先判断是否找到元素,避免报错 target_text = item.text # 或者去空格 target_text_stripped = item.get_text(strip=True)
补充说明:
.text会直接返回标签内的所有文本,包括子标签的文本(如果有的话).get_text(strip=True)可以自动去除文本前后的空白字符,比如换行、空格,适合需要干净文本的场景
内容的提问来源于stack exchange,提问作者CanB
相关产品推荐
相关产品推荐

