pyquery 查询元素查询失败 请教

发布于 2022-09-05 23:10:28 字数 882 浏览 22 评论 0

<div xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#" id="listing_address">
          <h1 itemprop="address" itemscope="itemscope" itemtype="http://schema.org/PostalAddress">
          <span itemprop="streetAddress" class="street-address">1-6/1 Stockdale Avenue</span> 
          <span itemprop="addressLocality" class="detail-address">Clayton</span> 
          <span itemprop="addressRegion" class="detail-address">Vic</span> 
          <span itemprop="postalCode" class="detail-address">3168</span></h1>
        </div>
        

doc = pq() # 载入了上面的内容
spanNode = doc("span")
按照预计应该是返回了一个len为4的PyQuery对象才对。但是监控看到len为0,没匹配到任何数据。
doc(".street-address").text()
但是这样能正确得到类为street-address的span元素内容

请教下我这样的查询哪里出了问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

嘴硬脾气大 2022-09-12 23:10:28

应该是xmlns这个属性导致pyquery没有正常地parse,去掉就正常了:

from pyquery import PyQuery as pq

doc = pq(
'''
<div id="listing_address">
    <h1 itemprop="address" itemscope="itemscope" itemtype="http://schema.org/PostalAddress">
    <span itemprop="streetAddress" class="street-address">1-6/1 Stockdale Avenue</span>
    <span itemprop="addressLocality" class="detail-address">Clayton</span>
    <span itemprop="addressRegion" class="detail-address">Vic</span>
    <span itemprop="postalCode" class="detail-address">3168</span></h1>
</div>
''')

span = doc('span')
for s in span.items():
    print s.text()

xmlns替换个名字:

from pyquery import PyQuery as pq

doc = pq(
'''
<div xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#" id="listing_address">
    <h1 itemprop="address" itemscope="itemscope" itemtype="http://schema.org/PostalAddress">
    <span itemprop="streetAddress" class="street-address">1-6/1 Stockdale Avenue</span>
    <span itemprop="addressLocality" class="detail-address">Clayton</span>
    <span itemprop="addressRegion" class="detail-address">Vic</span>
    <span itemprop="postalCode" class="detail-address">3168</span></h1>
</div>
'''.replace('xmlns', 'another_attr'))

span = doc('span')
for s in span.items():
    print s.text()
乖乖哒 2022-09-12 23:10:28

nb,玄学问题终于知道是什么回事了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文