Python Beautifulsoup提取十六进制值

时间:2018-07-05 12:48:52

标签: python beautifulsoup

我正在构建一个刮板,我想在其中从某些标签中提取数据,而无需进行任何转换。但是Beautifulsoup将一些十六进制值更改为ASCII。例如,此代码被转换为ASCII

html = """\
<title>&#x42;&#x69;&#x6C;&#x6C;&#x69;&#x6E;&#x67;&#x20;&#x61;&#x64;&#x64;&#x72;&#x65;&#x73;&#x73; - &#x50;&#x61;&#x79;&#x50;&#x61;&#x6C;</title>
<title>Billing address - PayPal</title>"""

这是代码的小例子

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "lxml")
for element in soup.findAll(['title', 'form', 'a']):
    print(str(element))

但是我想以相同的形式提取数据。我相信BeautifulSoup 4会自动转换HTML实体,这是我所不想要的。任何帮助将不胜感激。

顺便说一句,我正在使用Python 3.5和Beautifulsoup 4

1 个答案:

答案 0 :(得分:1)

您可以尝试使用re模块( Regular Expressions )。对于一个实例,下面的代码将提取标题标签信息而不进行转换:(我假设您之前声明了html变量)

import re
result = re.search('\<title\>.*\<\/title\>',html).group(0)
print(result) # It'll print <title>&#x42;&#x69;&#x6C;&#x6C;&#x69;&#x6E;&#x67;&#x20;&#x61;&#x64;&#x64;&#x72;&#x65;&#x73;&#x73; - &#x50;&#x61;&#x79;&#x50;&#x61;&#x6C;</title>

您也可以对其他标签执行相同的操作