三、爬虫数据分析-Xpath
1.环境安装:
-pip install lxml
2.如何实例化一个etree对象:
from lxml import etree
(1)将本地的html文档中的源码数据加载到etree对象中:
etree.parse(filePath)
(2)可以将从互联网上获取的源码数据加载到etree对象中:
etree.HTML("page_text")
3.xpath('xpath表达式')
(1)/:表示的是从根节点开始定位,表示的是一个层级。 (2)//:表示的是多个层级,可以表示任意位置开始定位 (3)属性定位://div[@class='song'] tag[@attrName="attrValue"] (4)索引定位://div[@class='song']/p[3] --索引是从1开始的 (5)取文本: -/text()获取的是标签中的直系的文本内容 - //text()标签中非直系的文本内容(所有的文本内容) (6)取属性(取出src中的属性值) img/@src
import requests from lxml import etree import os if __name__ == "__main__": url = "https://pic.netbian.com/4kmeinv/" headers = { "User-Agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' } response = requests.get(url = url,headers= headers) #手动设置数据的编码格式 # response.encoding = "utf-8" page_text = response.text tree = etree.HTML(page_text) #数据解析:src的数据,以及alt名称 li_list = tree.xpath('//div[@class= "slist"]/ul/li') # fp = open() if not os.path.exists('./piclibs'): os.mkdir('./piclibs') for li in li_list: img_src = 'https://pic.netbian.com' +li.xpath("./a/img/@src")[0] img_name = li.xpath("./a/img/@alt")[0] + ".jpg" # print(img_name,"1") #通用的处理中文乱码的解决方案 img_name = img_name.encode("iso-8859-1").decode('gbk') print(img_name) img_data = requests.get(url= img_src,headers=headers).content# 取出二进制数据" img_path = "piclibs/" + img_name with open(img_path,"wb")as fp: fp.write(img_data) print(img_name+"下载成功")

浙公网安备 33010602011771号