提取网页上引号内的文本

时间:2019-06-06 17:52:19

标签: python web-scraping

是否有一种简单的方法可以提取引号内网页上的所有文本?仅仅将HTML代码解析为字符串并不能解决问题。

1 个答案:

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