Python xPath:如何在迭代中获取值?

时间:2016-04-29 18:38:32

标签: python xpath

我从here

获取一个列表
<div class="con">                    
                                                 <div style="float:left; width:100px; text-align:center; height:100px"><div class="photoBox" style=" overflow:hidden; width:84px; height:84px;"><a href="/b/mesa_az/1220832011"><img src="/theme/default/images/no_img/business/b__80x80"></a></div></div>
                              <div style="float:left; padding-left:10px; width:550px;">
                                <div style="float:left;"><h3><a href="/b/mesa_az/1220832011"><b>Stamps</b> Automotive Enterprises</a></h3> </div><div style="float:right;"><em>Rating:</em> <span style="color:#333; font-size:14px; font-weight:bold;">0</span> &nbsp; <img src="/theme/default/images/star/stars_00.gif" width="74" height="15"></div>

                                               <div id="clear">
                        <div style="float:left">
                        <a href="/c/mesa_az/locindustry/">Local Industry</a> / <a href="/c/mesa_az/locindustry/heavyconstruct/">Heavy Construction</a><br>
                                                                        <address>15001 S Power Rd # 1  <br>
                Mesa,  AZ 85212                   </address>
                  </div>
                                  <div style="float:right;"><h5>Click: 8 &nbsp;  Reviews: 0 </h5></div>




                               </div>
                              </div>

                    </div>

现在在循环中我必须搜索是否有文本 Cool Biz Name ,获取它的URL

我正在尝试关注,但每次迭代都会获得所有链接:

b_list = tree.xpath('//*[@class="con"]')
    for biz in b_list:
        link = biz.xpath('//h3/text()')
        print(link)

如何让xPath遍历DOM内的biz

由于

1 个答案:

答案 0 :(得分:1)

内部XPath必须以点开头才能特定于上下文。此外,如果您还想获取节点子节点的文本,则需要使用.text_content()

b_list = tree.xpath('//*[@class="con"]')
for biz in b_list:
    link = biz.xpath('.//h3')[0].text_content()
    print(link)

您还可以使用findtext()方法:

biz.findtext('h3')