【问题标题】:How do I get rid of characters like ' that appear instead of apostrophes? [duplicate]如何摆脱像 ' 这样出现而不是撇号的字符? [复制]
【发布时间】:2012-01-26 07:59:19
【问题描述】:

可能重复:
Convert XML/HTML Entities into Unicode String in Python

我正在尝试使用 Python 抓取网站。我导入并使用了 urllib2、BeautifulSoup 和 re 模块。

response = urllib2.urlopen(url)
soup = BeautifulSoup(response)
responseString = str(soup)

coarseExpression = re.compile('<div class="sodatext">[\n]*.*[\n]*</div>')
coarseResult = coarseExpression.findall(responseString)

fineExpression = re.compile('<[^>]*>')
fineResult = []

for coarse in coarseResult:
    fine = fineExpression.sub('', coarse) 
    #print(fine)
    fineResult.append(fine)

不幸的是,像撇号这样的字符以这样的损坏方式出现 - ' ; 有没有办法避免这种情况?或者有什么方法可以轻松替换它们?

【问题讨论】:

  • 这没有损坏,它是用于撇号 (en.wikipedia.org/wiki/…) 的 HTML/XML 字符实体。您总是可以将这些实体解码回它们的 ASCII 等价物。 (stackoverflow.com/questions/57708/…)
  • 你正在 BeautifulSoup 中加载一个页面只是为了对其进行正则表达式!? 你为什么要做这种可怕的事情?!
  • @FrancisAvila,我仍在摸索 Python。你能告诉我一个更好的方法吗?
  • 使用 BeautifulSoup 搜索或遍历 HTML 树并获得所需的内容。这就是为什么它首先存在!阅读 BeautifulSoup 文档。
  • 打开一个新问题,将您作为一个整体尝试做的事情。我怀疑您会执着于使用正则表达式,而实际上这正是完成任务的错误工具。

标签: python regex screen-scraping web-scraping beautifulsoup


【解决方案1】:

以下关于实体转换的 BeautifulSoup 文档应该是您正在寻找的:

http://www.crummy.com/software/BeautifulSoup/documentation.html#Entity%20Conversion

【讨论】:

  • 只是指出 BS 无法解码十六进制编码实体 (&amp;#x27;),但它适用于十进制编码实体 (&amp;#39;)。因此,OP 需要事先对其进行转换。
  • @Avaris 这听起来像是 BS,TBH 中的错误,或者至少是缺少的功能。
猜你喜欢
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多