介绍
lxml也是一个用于筛选指定html内容的模块,pyquery就是基于lxml。
使用lxml主要需要了解xpath
xpath语法
/:在子节点里面找//:在子子孙孙节点里面找//div:查找当前网页的所有div标签//div/p:先找到所有的div标签,再从div的字标签中找p标签//div//p:先找到所有的div标签,再从div的子孙标签中找p标签//div/a:先查找所有div标签,再从div的子标签中找a标签//div/a[@id]:先查找所有div标签,再从div的子标签中找有id属性的a标签//div//a[@id='fuck']:先查找所有div标签,再从div的子孙标签中找有id='fuck'的a标签//div/a[1]:先查找所有的div标签,再找div的子标签中的第一个a标签,这里的索引是从1开始的,不是0//div/a[last()]:和上面一样,不过这里是最后一个a标签//div/a[position()<3]:前两个a标签//div/a[@price]:拥有price属性的a标签//div/a[@price=10]:拥有price属性,并且值等于10的a标签。当然里面还支持>,<,>=,<=等等**//div/*:星号表示通配符,选取所有div的子标签**//div/a[@*]:选取所有div的子标签中带有属性的a标签,什么属性都可以,id、class、href等等都可以//div/a | //div/p:选取所有的div的子标签中的所有a元素和p元素//div/a[contains(@class, "BDE")]:找出所有div的子标签中的class属性包含"BDE"的a标签//div/a[starts-with(@class, "BDE")]:找出所有div的子标签中的class属性以"BDE"开头的a标签//div/a[contains(@href, "mashiro")]:找出所有div的子标签中的class属性包含"mashiro"的a标签//a/@href:获取href属性//a/@class:获取class属性//a/text():获取文本//a[contains(text(), "清纯可爱")]:找出文本包含"清纯可爱"的a标签
我们可能注意到:
@href、@class、text()前面只有一个/,如果是两个/的话,比如div标签,它里面是没有href属性的。但是div里面有a标签,a标签里面有href属性,所以我们仍然可以通过
使用lxml
python
from lxml import etree
import requests
res = requests.get("http://www.baidu.com", headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"}) res.encoding = res.apparent_encoding
转载于:https://www.cnblogs.com/valorchang/p/11395423.html