xpath从此放弃正则表达式

来源:互联网 发布:尤因数据 编辑:程序博客网 时间:2024/06/11 17:25
  1. 本次的问题是从网页中提取url产生的。地址http://beijing.anjuke.com/sale/
  2. xpath介绍自己百度,这里有两个重点,提取文本内容/text(),提取属性内容/@xxx
  3. 下面举例说明使用介绍,前提条件有lxml模块
  4. 首先点击图片,查看元素,得到xpath

    这里写图片描述
    5.得到的是原始是”//[@id=”houselist-mod”]/li[2]/div[1]/img” 这里我要提取的img里面的src,从结构中我们很容易得到修改后的结果”//[@id=”houselist-mod”]/li/div[1]/img/@src”
    6.这里最好把页面的源代码保存下来,放在一个本地文件中,因为我试了,直接通过代码得到源代码的,中间最重要的部分,得不到。下面的代码展示

#coding:utf-8import refrom lxml import etreeclass splider:   def printurl(self):        te=open("3.txt")        cont=te.read()        selector=etree.HTML(cont)        texturl=selector.xpath('//*[@id="houselist-mod"]/li/div[1]/img/@src')        print "符合条件个数" +str(len(texturl))              for text in texturl:                print textif __name__ == '__main__':    sp=splider()    sp.printurl()

这里写图片描述
7.再举一个得到内容的例子
这里写图片描述
得到的原始内容是//[@id=”houselist-mod”]/li[2]/div[2]/div[2]/span[1]分析得到//[@id=”houselist-mod”]/li/div[2]/div[2]/span/text() 这里我做了点处理。信息成条显示。

#coding:utf-8import refrom lxml import etreeclass splider:   def printurl(self):        te=open("3.txt")        cont=te.read()        selector=etree.HTML(cont)        texturl=selector.xpath('//*[@id="houselist-mod"]/li/div[2]/div[2]/span/text()')        i=0;             detail=""        for text in texturl:              if i==5:               print detail[:-1]               i=1;               detail=text+"|"            else:                             i=i+1                detail=detail+text+"|"if __name__ == '__main__':    sp=splider()    sp.printurl()

这里写图片描述

0 0