在BeautifulSoup4用于Python如果我exectue以下命令:BeautifulSoup替换单引号用双引号
soup = BeautifulSoup("<a href='http://somelink'>link</a>")
print soup
的输出是:
<a href="http://somelink">link</a>
BeaurifulSoup替换单引号用双引号和我不我想要那个。我如何取消/覆盖该行为?
澄清:
我使用的urllib2得到以下页面的HTML:http://www.download3000.com/
然后用BeautifulSoup4只提取HTML的一部分。
我已经做了一个函数,它需要一个文档(并非总是html)以及它需要捕获并返回正则表达式的一些示例。 我喂的功能与follwoing样本:如果我申请了正则表达式的\w\w><li><a href="(.*?)">\w\w\w\w\w
:
samples = [
'/showarticles-1-0-date.html',
'/showarticles-2-0-date.html',
'/showarticles-3-0-date.html'
]
鉴于http://www.download3000.com/
页面的HTML代码和上面的样本,我的函数返回下面的正则表达式download3000的html代码,它不会找到任何匹配。这是因为链接被html中的单引号括起来,但是当我使用BeautifulSoup时,它会用双引号替换单引号,并且生成的正则表达式仅适用于由BeaurifulSoup修改的html。
这就是为什么我需要强制BeautifulSoup不要用双引号替换单引号,以便生成的正则表达式将为\w\w><li><a href='(.*?)'>\w\w\w\w\w
,从而从页面中提取我需要的内容。
我可以使用像我的正则表达式替换所有单引号["\']
转储解决方案,但然后正则表达式也会捕获一些我不想要的链接。
为什么你不希望这样呢?* *意义是一样的。BeautifulSoup是给了一个库您访问*内容*的HTML文件,这些内容都保留得很好, –
@Martijn彼得斯我正在写一个正则表达式生成器。 Atm会生成正则表达式,但是由于BeautifulSoup和reg生成的reg ex在原始文档上不匹配,因此reg ex包含双引号而不是单引号。 –
你真的*应该避免在这里使用正则表达式。而你的正则表达式生成器不能被调整为使用'['']'而不是? –