xpath数据解析

xpath原理

xpath原理:
	1.实例化一个etree对象,且需要将被解析的页面源代码加载到给对象中
	2.调用etree对象中的xpath方法结合xpath表达式实现标签的定位和内容的捕获
环境安装
	pip3 install lxml
实例化一个etree对象:from lxml import etree
	1.将本地文档的源代码数据导入:
	etree.parse(filePath)
	2.导入互联网上获取的源码数据
	etree.HTML('page_text')
xpath表达式
	/:表示从根节点开始定位。表示的是一个层级
	//:表示多个层级。表示从任意的位置开始定位
	属性定位://div[@class='song'] tag[@attrName="attrValue"]
	索引定位://div[@class='song']/p[3]  索引是从1开始的
	取文本
		/text()  获取的是标签中直系的文本内容
		//text()   标签中非直系的文本内容(所有的文本内容)
	取属性
		@attrName    ==>img/src
import requests
from lxml import etree
import os

if __name__ == "__main__":
    if not os.path.exists('./picsLib'):
        os.mkdir('./picsLib')
    headers = {
        'user-agent': 'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 88.0.4324.150Safari / 537.36'
    }
    url = "http://pic.netbian.com/4kbeijing/"
    response = requests.get(url = url,headers=headers)
    response.encoding = response.apparent_encoding
    page_text = response.text
    tree = etree.HTML(page_text)
    lis = tree.xpath('//div[@class="slist"]/ul/li')
    for li in lis:
        img_src = 'http://pic.netbian.com'+li.xpath('./a/img/@src')[0]
        img_name = li.xpath('./a/img/@alt')[0]+'.jpg'
        #img_name = img_name.encode('iso-8859-1').decode('gbk')
        #print(img_name,img_src)
        img_data = requests.get(url = img_src,headers=headers).content
        img_path = 'picsLib/'+img_name
        with open(img_path,'wb') as fp:
            fp.write(img_data)
            print(img_name+"已保存!")
            fp.close()

上一篇:Python爬虫学习之(一)| 基础


下一篇:第一次用爬虫批量下载小说章节