pyquery 查询元素查询失败 请教

<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元素内容

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

阅读 4.1k
2 个回答

应该是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()
新手上路,请多包涵

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题