数据解析之xpath 太6了

基本语法:

属性定位:
    #找到class属性值为song的div标签
    //div[@class="song"] 
层级&索引定位:
    #找到class属性值为tang的div的直系子标签ul下的第二个子标签li下的直系子标签a
    //div[@class="tang"]/ul/li[2]/a
逻辑运算:
    #找到href属性值为空且class属性值为du的a标签
    //a[@href="" and @class="du"]
模糊匹配:
    //div[contains(@class, "ng")]
    //div[starts-with(@class, "ta")]
取文本:
    # /表示获取某个标签下的文本内容
    # //表示获取某个标签下的文本内容和所有子标签下的文本内容
    //div[@class="song"]/p[1]/text()
    //div[@class="tang"]//text()
取属性:
    //div[@class="tang"]//li[2]/a/@href
View Code

怎么玩呢?

# xpath学习:
# # pip install lxml
from lxml import etree
import requests
# 爬取网址为网易云音乐
url = "https://music.163.com/discover/playlist/?cat=摇滚"
res = requests.get(url,headers=headers)
# etree.parse("D://a.html") # 本地
tree = etree.HTML(res.text)  # 网上的页面
playlist_img_src = tree.xpath("//div[@class='u-cover u-cover-1']/img/@src ")
playlist_title = tree.xpath("//div[@class='u-cover u-cover-1']/a/@title")
playlist_href = tree.xpath("//div[@class='u-cover u-cover-1']/a/@href")

for i in range(len(playlist_href)):
    print("=" * 20)
    print(playlist_href[i])
    print(playlist_title[i])
    print(playlist_img_src[i])
    print("=" * 20)
View Code

 

posted @ 2021-02-18 13:52    阅读(69)  评论(0编辑  收藏  举报