为了账号安全,请及时绑定邮箱和手机立即绑定

__dict __。items()不返回所有对象属性

__dict __。items()不返回所有对象属性

慕侠2389804 2021-03-29 14:12:16
考虑:>>> result = requests.get('http://dotancohen.com')>>> soup = BeautifulSoup(result.text)>>> a = soup.find('a')>>> for k,v in a.__dict__.items():...     print(str(k)+": "+str(v))... can_be_empty_element: Falseprevious_element: <h1><a class="title" href="/">Dotan Cohen</a></h1>next_sibling: Nonename: aparent: <h1><a class="title" href="/">Dotan Cohen</a></h1>namespace: Noneprefix: Noneprevious_sibling: Noneattrs: {'href': '/', 'class': ['title']}next_element: Dotan Cohenparser_class: <class 'bs4.BeautifulSoup'>hidden: Falsecontents: ['Dotan Cohen']>>> pprint(a)<a class="title" href="/">Dotan Cohen</a>>>>该值pprint的回报是不是任何的价值属性是__dict__.items()回报。对我来说,这意味着其中的某些属性a未在中返回__dict__.items()。我将如何访问这些属性?
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

实例字典中没有缺少属性。让我们看一下元素的表示形式:

<a class="title" href="/">Dotan Cohen</a>

我们有一个标记名(a),属性(titlehref,以及值),还有文本内容(Dotan Cohen)。这些出现在实例属性您列出:

  • name: a

  • attrs: {'href': '/', 'class': ['title']}

  • contents: ['Dotan Cohen']

contents是此元素的直接后代的列表;只有一个文本对象(NavigableString实例使用与常规字符串类似的表示形式)。

您可以使用vars()内置的API函数列出实例属性。我知道您pprint()已经在使用;而不是循环播放.items(),只需使用pprint(vars(a))并保存您自己输入的完整循环即可;作为奖励pprint(),首先对键进行排序:

>>> pprint(vars(a))

{'attrs': {'class': ['title'], 'href': '/'},

 'can_be_empty_element': False,

 'contents': [u'Dotan Cohen'],

 'hidden': False,

 'name': 'a',

 'namespace': None,

 'next_element': u'Dotan Cohen',

 'next_sibling': None,

 'parent': <h1><a class="title" href="/">Dotan Cohen</a></h1>,

 'parser_class': <class 'bs4.BeautifulSoup'>,

 'prefix': None,

 'previous_element': <h1><a class="title" href="/">Dotan Cohen</a></h1>,

 'previous_sibling': None}

您正在查看的字符串是由.__repr__()元素类的钩子构建的:


>>> a.__repr__()

'<a class="title" href="/">Dotan Cohen</a>'

通常repr()在对象上使用时调用:


>>> repr(a)

'<a class="title" href="/">Dotan Cohen</a>'

该字符串由您在对象属性中看到的已解析元素信息构建而成。


查看完整回答
反对 回复 2021-04-01
  • 1 回答
  • 0 关注
  • 302 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信