是否有一种简单的方法可以提取引号内网页上的所有文本?仅仅将HTML代码解析为字符串并不能解决问题。
答案 0 :(得分:1)
将yahoo链接替换为所需的任何链接。这将返回双引号之间所有句子和单词的列表。
from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib
import re
def tag_visible(element):
if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
return False
if isinstance(element, Comment):
return False
return True
def text_from_html(body):
soup = BeautifulSoup(body, 'html.parser')
texts = soup.findAll(text=True)
visible_texts = filter(tag_visible, texts)
return u" ".join(t.strip() for t in visible_texts)
html = urllib.urlopen('https://news.yahoo.com/poll-biden-leads-trump-four-165851808.html').read()
alltext = text_from_html(html)
charmap = { 0x201c : u'"',
0x201d : u'"',
0x2018 : u"'",
0x2019 : u"'" }
alltext = alltext.translate(charmap)
final = re.findall(r'"([^"]*)"', alltext)