爬虫之xpath

一、xpath的语法


xpath是用来对XML文件进行解析的。


针对如下的XML文件:







  Everyday Italian
  Giada De Laurentiis
  2005
  30.00



  Harry Potter
  J K. Rowling
  2005
  29.99



  XQuery Kick Start
  James McGovern
  Per Bothner
  Kurt Cagle
  James Linn
  Vaidyanathan Nagarajan
  2003
  49.99



  Learning XML
  Erik T. Ray
  2003
  39.95




/:表示路径;

//:表示所有;

[]:表示内容;

@:表示属性;

text():表示文本;

.:表示当前节点;

..:表示上一节点;


实例:


1. 取出bookstore中的第一个book


/bookstore/book[0]


2. 取出bookstore下的所有book


/bookstore//book


或者直接


//book


3. 获取所有title的文本


/bookstore//book/title[@lang="en"]/text()

或者


//title/text()


4. 获取title的语言类别


//title/@lang


5. 模糊查询


...
...
...
...
...

此时可使用模糊查询来匹配所有的节点:


//div[contains(@id, "qiushi_tag")]


注意:使用/来表示路径时,必须一级一级地来,使用//来表示时,可以跨节点。


二、xpath的使用


对于未使用scrapy框架的代码来说,需要将爬取的html文件转换为XML文件,才能使用xpath来解析


需要导入lxml中的etree


#coding:utf-8

import urllib.request
from lxml import etree

link="http://tieba.baidu.com/f?kw=lol&pn=1"

request = urllib.request.Request(link)
html = urllib.request.urlopen(request).read()

# 解析
content = etree.HTML(html)

# 取出帖子里每层层主发送的图片连接集合
#link_list = content.xpath('//img[@class="BDE_Image"]/@src')

link_list = content.xpath(
    '//div[@class="threadlist_detail clearfix"]//li/a/img/@data-original'
    )

# 取出每个图片的连接
for link in link_list:
    print(link)


你可能感兴趣的:(爬虫)