BeautifulSoup 用双引号替换单引号

Ion*_*lub 5 python beautifulsoup

在 BeautifulSoup4 for Python 中,如果我执行以下命令:

soup = BeautifulSoup("<a href='http://somelink'>link</a>")
print soup
Run Code Online (Sandbox Code Playgroud)

输出是:

<a href="http://somelink">link</a>
Run Code Online (Sandbox Code Playgroud)

BeaurifulSoup 用双引号替换单引号,我不希望这样。我怎样才能取消/覆盖该行为?

澄清:

我使用urllib2获取以下页面的html:http://www.download3000.com/然后使用BeautifulSoup4仅提取html的一部分。

我创建了一个函数,它接受一个文档(并不总是 html)和一些它需要捕获的样本并返回一个正则表达式。我向该函数提供以下示例:

samples = [
    '/showarticles-1-0-date.html',
    '/showarticles-2-0-date.html',
    '/showarticles-3-0-date.html'
]
Run Code Online (Sandbox Code Playgroud)

给定页面的 html 代码http://www.download3000.com/和上面的示例,我的函数返回以下正则表达式:\w\w><li><a href="(.*?)">\w\w\w\w\w

如果我将正则表达式应用于 download3000 的 html 代码,它将找不到任何匹配项。这是因为 html 中的链接被单引号包围,但是当我使用 BeautifulSoup 时,它会用双引号替换单引号,并且生成的正则表达式仅适用于 BeaurifulSoup 修改的 html。

这就是为什么我需要强制BeautifulSoup不要用双引号替换单引号,这样生成的正则表达式将为\w\w><li><a href='(.*?)'>\w\w\w\w\w,从而从页面中提取我需要的内容。

我可以使用转储解决方案,例如将正则表达式中的所有单引号替换为["\'],但正则表达式也会捕获一些我不想要的链接。

Vor*_*ung -1

这适用于 BeautifulSoup 3.2。我假设发生的情况是,当单引号转换为&quot;解析器时,然后用 " 将它们包围起来,然后在输出时出现模式"''"

>>> c="<a href='http://somelink'>"
>>> from BeautifulSoup import BeautifulSoup
>>> import re
>>> d=re.sub("'","&quot;",c)
>>> e=BeautifulSoup(d)
>>> def qfix(x):  return re.sub("\'\"|\"'","'",x)
>>> qfix((str(e))
Run Code Online (Sandbox Code Playgroud)

您也许可以在 BeautifulSoup 4 中使用类似于“qfix”的格式化程序

或者它可能根本不起作用:)