【问题标题】:How clean the string from any none unicode \ special characters, html markup, js - leaving pure text and punctuation - in python?如何从任何非 unicode \ 特殊字符、html 标记、js 中清除字符串 - 在 python 中留下纯文本和标点符号?
【发布时间】:2017-01-09 09:14:00
【问题描述】:

我已经阅读了很多类似的问题,但没有找到解决我在数据清理过程中遇到的所有问题的解决方案。

我有一个脚本可以抓取一组网站并从页面正文中获取特定的文本块。

我遇到的问题是文本中仍然存在 html 标记、引号的不同符号(例如,不是 ' 而是 ` 或更糟的情况)、&amp 之类的东西等等。

现在我通过自己的清理函数解析文本,但它们并不完美,仍然会遗漏一些情况。

我想知道是否有一个包或通用方法可以从所有这些情况中清除一个字符串,并将诸如 ` 转换为 ' 之类的字符等等?

【问题讨论】:

  • 举个例子

标签: python unicode web-scraping


【解决方案1】:

您可以使用 HTMLParser 模块。

在 python 2 上: 从 HTMLParser 导入 HTMLParser

class MLStripper(HTMLParser):
def __init__(self):
    self.reset()
    self.fed = []
def handle_data(self, d):
    self.fed.append(d)
def get_data(self):
    return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

在 python 3 上:

from html.parser import HTMLParser

class MLStripper(HTMLParser):
def __init__(self):
    self.reset()
    self.strict = False
    self.convert_charrefs= True
    self.fed = []
def handle_data(self, d):
    self.fed.append(d)
def get_data(self):
    return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

【讨论】:

  • 这只是去掉 html 还是处理“奇怪”的符号?我也认为我有时会遇到不同的字符集,不知道如何处理......
【解决方案2】:

你看过Scrapy吗?

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 2014-03-22
    • 2015-07-07
    • 2011-08-16
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多