xpath是一门语言,可以在xml文档中查找信息,在爬虫中比正则表达式方便很多;
xpath是属于lxml库,安装xpath首先需要安装python第三方库lxml库文件;
from lxml import etree
Selector = etree.HTML(html1) ####html1是页面源代码
Selector.xpath
对于网页选择,我们可以使用手动查找,也可也使用chrome右键查找xpath
xpath提取内容:
(1) //定位根节点
(2) /往下层寻找
(3) /text()提取文本内容
(4) /@xxx提取属性内容
(5) 特殊用法 start-with 如:
<div id= "test-1">haha</div>
<div id= "test-2">zgd</div>
<div id= "test-3">scx</div>
可以写成content =selector.xpath( '//div[start-with(@id,"test")]/text()'),
其实我们也可以找到上一级目录,然后定位到div,然后再遍历也能解决问题。
(6) 特殊string(.)
html2 = ''' <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <div id="test3"> 我左青龙, <span id="tiger"> 右白虎, <ul>上朱雀, <li>下玄武。</li> </ul> 老牛在当中, </span> 龙头在胸口。 </div> </body> </html>
data = selector.xpath('//div[@id="test3"]')[0]
info = data.xpath('string(.)')
content = info.replace('\n', ' ').replace(' ' , ' ' )
上面代码能提取出所有的文字。
如果使用data = selector.xpath('//div[@id="test3"]/text()')只能提取出
我左青龙,
龙头在胸口。
对于内部的内容是不能提取出的。