【发布时间】:2013-01-18 14:25:33
【问题描述】:
我有以下描述我想使用我的程序报废。
<hr>为 AFROTC 学员提供多达 13 个选项,用于实际领导和专业培训
通过接触美国空军的职能、部署和就业行动。外语和文化沉浸也可用/可能,但总体重点仍然是领导力发展和实习。所有计划都在选定的空军基地和美国和国外的其他地点进行。<br>
我有以下代码:
findDescription = re.findall('<hr>(.*?)(?:<strong>|<br>)', coursePage)
我得到以下输出:
['通过接触美国空军的职能、部署和就业行动,为 AFROTC 学员提供多达 13 种实际领导力和专业培训的选择。\xc2\xa0 外语和文化沉浸也可用/可能,但总体重点仍然是领导力发展和实习。\xc2\xa0 在选定的空军基地和美国和国外的其他地点进行的所有计划。']
为什么我会在这里收到 \xc2\xa0 这样的奇怪内容?我的代码也被引号" 绊倒了。坦率地说,我相信我的正则表达式代码中的句点 . 应该接受所有字符串。出了什么问题?
感谢任何快速提示。我在星期五才听说正则表达式,我已经取得了巨大的进步,但是这个真的让我绊倒了几个小时。
热烈的问候, 极客欧米茄
【问题讨论】:
-
用正则表达式解析 HTML 是脆弱的。使用像 BeautifulSoup 这样已建立的库要健壮得多。 crummy.com/software/BeautifulSoup
-
你能提供一个你的代码被双引号“绊倒”的例子吗?
-
我认为它既是引号又是'符号。这是 ' 符号示例:accountant’s
-
@GeekyOmega Google HTML 实体编码。您的示例是一个 HTML 实体编码的字符串。您需要以某种方式对其进行解码(AndyLester 已经提到过 BeautifulSoup 可以做到这一点,但也有其他方法),以便获得将在浏览器中显示的文本。请注意,如果您将字符串粘贴到此处的框中:htmlentities.net 并单击“解码”,您将看到您期望和想要的输出。
-
+1 到@MarkAmery。如果您想在 Python 中对这些内容进行解码,SO 上有多个问题可以解释如何执行此操作。他们中的大多数似乎都在 this one 的相关列表中。
标签: python regex web-scraping