我是python的新手,我正在使用BeautifulSoup来解析网站,然后提取数据。我有以下代码:
for line in raw_data: #raw_data is the parsed html separated into smaller blocks
d = {}
d['name'] = line.find('div', {'class':'torrentname'}).find('a')
print d['name']
<a href="/ubuntu-9-10-desktop-i386-t3144211.html">
<strong class="red">Ubuntu</strong> 9.10 desktop (i386)</a>
通常,我可以通过写作来提取'Ubuntu 9.10 desktop(i386)':
d['name'] = line.find('div', {'class':'torrentname'}).find('a').string
但是由于强大的html标签,它返回None。有没有办法提取强标签,然后使用.string或有更好的方法吗?我尝试过使用BeautifulSoup的extract()函数,但我无法使用它。
编辑:我刚刚意识到如果有两组强标签,我的解决方案不起作用,因为这些单词之间的空格被遗漏了。什么是解决这个问题的方法?
答案 0 :(得分:3)
使用“.text”属性:
d['name'] = line.find('div', {'class':'torrentname'}).find('a').text
或者在findAll(text = True)上进行连接:
anchor = line.find('div', {'class':'torrentname'}).find('a')
d['name'] = ''.join(anchor.findAll(text=True))