我想从<span class= ''>
中删除。代码在我正在废弃的页面上看起来像这样:
< span class = "catnum"> Disc Number < / span>
"1"
< br >
< span class = "catnum"> Track Number < / span>
"1"
< br>
< span class = "catnum" > Duration < /span>
"5:28"
<br>
我需要获得的是</span>
标记之后的那些数字。我还要提一下,我正在编写一个更大的代码来删除1200个站点,这将需要遍历1200个站点,其中引号中的数字将在页面之间发生变化。
我在一个页面上尝试将此代码作为测试:
from bs4 import BeautifulSoup
soup = BeautifulSoup (open("Smith.html"), "html.parser")
for tag in soup.findAll('span'):
if tag.has_key('class'):
if tag['class'] == 'catnum':
print tag.string
我知道会打印所有&#39; span类&#39;标签,而不只是我想要的三个,但我想我仍然会测试它,看它是否有效,我得到了这个错误:
/Library/Python/2.7/site-packages/bs4/element.py:1527:UserWarning: has_key已弃用。请改用has_attr(&#34; class&#34;)。密钥))
答案 0 :(得分:0)
如错误消息中所述,您应该使用tag.has_attr("class")
代替弃用的tag.has_key("class")
方法。
希望它有所帮助。
西蒙
答案 1 :(得分:0)
您可以按属性{'class': 'catnum'}
和text=re.compile('Disc Number')
内的文字约束搜索。然后使用.next_sibling
查找文字:
from bs4 import BeautifulSoup
import re
s = '''
<span class = "catnum"> Disc Number </span>
"1"
<br/>
<span class = "catnum"> Track Number </span>
"1"
<br/>
<span class = "catnum"> Duration </span>
"5:28"
<br/>'''
soup = BeautifulSoup(s, 'html.parser')
span = soup.find('span', {'class': 'catnum'}, text=re.compile(r'Disc Number'))
print span.next_sibling