我正在尝试在网站上测试beautifulsoup4 webscrap代码。已经完成了大多数操作,但是由于其位置的缘故,一个属性信息对我来说很难完成。

代码如下:

span class="callseller-description-icon">
<a id="phone-lead" class="callseller-description-link" rel="0501365082" href="#">Show Phone Number</a>


我正在尝试此操作,但不确定是否还可以

try:
        phone=soup.find('a',{'id':'phone-lead'})
        for a in phone:
            phone_result= str(a.get_text('rel').strip().encode("utf-8"))
        print "Phone information:", phone_result
    except StandardError as e:
        phone_result="Error was {0}".format(e)
        print phone_result


可能是我的错误。很难获得带有电话号码的rel信息

我得到的错误是

NavigableString object has no attribute get_text

最佳答案

find返回元素而不是列表,如果要所有a标记,请使用find_all方法。同样,要获取rel属性,您还需要使用.get()方法或字典查找。您还可以添加rel=True以仅使用“ rel”属性获取那些“ a”标签。

演示:


使用find()

>>> soup.find('a', {'id': 'phone-lead', 'rel': True}).get('rel')
['0501365082']

使用find_all

>>> for a in soup.find_all('a', {'id':'phone-lead', 'rel': True}):
...     print(a['rel'])
...
['0501365082']



要获得所有“ rel”的列表,您可以使用列表推导

>>> [rel for rel in a['rel'] for a in soup.find_all('a', {'id':'phone-lead', 'rel': True})]
['0501365082']

关于python - 无法通过beautifulsoup网站抓取python获取标签“rel”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37519993/

10-12 23:28