Python:BeautifulSoup过滤所有'rel'值

时间:2017-06-23 15:22:43

标签: python beautifulsoup load filtering

我需要从HTML文件中过滤掉所有'rel'值,我正在使用BeautifulSoup进行过滤

    for tag in self.loadtree_parser.find_all('a'):
        print tag.get('rel')

给了我

[u'0']
[u'83']
[u'84']
[u'39']
[u'24']
[u'41']

我想要'纯'数字,而不是奇怪[u'']。怎么办呢?

HTML:

<a href="#" rel="0" title="" id="Ta_0">
<a href="#" rel="83" title="" id="Ta_83">
<a href="#" rel="84" title="" id="Ta_84">
<a href="#" rel="39" title="" id="Ta_39">
<a href="#" rel="24" title="" id="Ta_24">
<a href="#" rel="41" title="" id="Ta_41">

2 个答案:

答案 0 :(得分:1)

看起来print tag.get('rel')正在打印包含一个元素的列表。列表元素的渲染效果不如标量值;尝试在打印前使用索引提取字符串。

print tag.get('rel')[0]

答案 1 :(得分:1)

在python2中,字符串文字旁边的u表示它是unicode。如果你使用str(u'123')投射它,你将获得一个标准字符串。如果你想要一个数字,你可以简单地用int(u'123')

来表示

请记住,你在这里得到的是一个单元素列表,所以你真正需要做的是:

print int(tag.get('rel')[0])

注意 :在python3中不再有u修饰符,因为默认情况下每个字符串都是unicode。