爬虫入门3-在lxml中使用xpath语法
谷歌浏览器安装 xpath-helper(win *** 作系统)
如果可以翻墙上外网,直接到谷歌的插件市场安装即可,如果没有翻墙条件,按归如下步骤也可安装成功。
先下载安装包和插件伴侣 https://download.csdn.net/download/jisuanji12306/77324329
运行插件伴侣.exe,并将插件解压到桌面
将刚才解压好的文件夹移到一个专门存放谷歌浏览器插件的文件夹下,最好不要放在桌面上打开浏览器扩展程序标签页 chrome://extensions/,点击加载已解压的扩展程序,选择上一步的目录即可
将插件固定在书签栏
使用,打开 https://www.baidu.com 点击插件,查询网页下所有li标签的内容
xpath语法
注意点:
/和//的区别:/代表只获取子节点,//获取子孙节点,一般//用的比较多,当然也要视情况而定
contains:有时候某个属性中包含了多个值,那么可以使用contains函数,示例如下:
//title[contains(@lang,'en')]
谓词中下标是从1开始的,不是从0开始的
在lxml中使用xpath语法
lxml是一个第三方模块库,我们可以利用他来解析HTML代码,并且在解析HTML代码的时候,如果HTML代码不
规范,他会自动的进行补全。可以通过pip install lxml安装,或者在pycharm插件中添加。
from lxml import etree
text = '''
first item
second item
third item
fourth item
fifth item
'''
# 将字符串解析为HTML文档,并自动补全缺失的标签
html = etree.HTML(text)
print(html)
# 在lxml中使用xpath语法
# 1. 获取所有的li标签
result = html.xpath('//li')
# print(result)
for i in result:
print(etree.tostring(i).decode('utf-8'))
# 2. 获取所有li元素下所有class属性的值
result = html.xpath('//li/@class')
print(result)
# 3. 获取li标签下href为www.baidu.com的a标签
result = html.xpath('//li//a[@href="www.baidu.com"]')
print(result)
# 4.获取li标签下所有span标签
result = html.xpath('//li//span')
print(result)
# 5. 获取li标签下的a标签里的所有class:
result = html.xpath("//li/a//@class")
print(result)
# 6. 获取最后一个li的a的href属性对应的值
result = html.xpath("//li[last()]/a/@href")
print(result)
# 7. 获取倒数第二个li元素的内容:
result = html.xpath("//li[last() - 1]/a/text()")
print(result)
评论列表(0条)