如何提取网页笑话的回答内容?列表去重方案失效求助
爬取目标页面笑话回答的解决方案
方法1:直接获取<strong>的兄弟节点内容
每个笑话的回答就在<strong>标签的紧邻后面,用next_sibling可以直接定位,记得清理多余空白:
from bs4 import BeautifulSoup import requests url = "https://www.womansday.com/life/entertainment/a38635408/corny-jokes/" resp = requests.get(url) soup = BeautifulSoup(resp.text, "html.parser") for li in soup.find_all("li"): strong = li.find("strong") if strong: answer = strong.next_sibling.strip() if answer: print(answer)
方法2:通过文本差集提取回答
先拿到<li>的完整文本,再去掉<strong>里的问题文本,剩余部分就是回答:
for li in soup.find_all("li"): strong = li.find("strong") if strong: full_text = li.get_text(strip=True, separator=" ") question = strong.get_text(strip=True) answer = full_text.replace(question, "").strip() if answer: print(answer)
方法3:遍历<li>子节点筛选非<strong>内容
遍历<li>的所有子节点,只收集非<strong>标签的文本内容,最后拼接成完整回答:
for li in soup.find_all("li"): answer_pieces = [] for node in li.children: if node.name != "strong": text = str(node).strip() if text: answer_pieces.append(text) answer = " ".join(answer_pieces) if answer: print(answer)
内容的提问来源于stack exchange,提问作者pythonnoob
相关产品推荐
相关产品推荐

