爬虫神器xpath的用法(一)
原创
©著作权归作者所有:来自51CTO博客作者yuejide的原创作品,请联系作者获取转载授权,否则将追究法律责任
1、如果你没有安装lxml,请运行pip install lxml或者easy_install lxml安装,如果在安装过程中失败的话,
是因为lxml需要依赖某些库文件,具体可以问下度娘,这里不再赘述。
2、安装成功后,请看下面测试代码
//:定位根节点
/:往下层寻找
/text(): 提取文本内容
/@xxx: 提取属性内容
#encoding=utf-8
from lxml import etree
html = '''
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>测试-常规用法</title>
</head>
<body>
<div id="content">
<ul id="useful">
<li>这是第一条信息</li>
<li>这是第二条信息</li>
<li>这是第三条信息</li>
</ul>
<ul id="useless">
<li>不需要的信息1</li>
<li>不需要的信息2</li>
<li>不需要的信息3</li>
</ul>
<div id="url">
<a href="http://www.meilishuo.com">美丽说</a>
<a href="http://www.meilishuo.com" title="美丽说流行款">美丽说只做正确流行款</a>
</div>
</div>
</body>
</html>
'''
selector = etree.HTML(html)
#提取文本,获取根目录下div且id=content下面的ul且id=useful的文本内容
content = selector.xpath('//div[@id="content"]/ul[@id="useful"]/li/text()')
for each in content:
print each
#提取属性 获取根目录下a标签且属性为href的内容,如果不指定则返回为list
link = selector.xpath('//a/@href')
print link
title = selector.xpath('//a/@title')
print title[0]
将打印出如下信息:
//提取文本属性的输出:
这是第一条信息
这是第二条信息
这是第三条信息
//提起属性的输出:
['http://www.meilishuo.com', 'http://www.meilishuo.com']
美丽说流行款