一般的网站建设,网站首页分辨率,上海网络推广培训学校,建筑网片产品资料目录 
0.xpath最新下载地址和安装教程 
1.xpath安装 
2.xpath基本使用 
3.xpath基本语法 
4.实例 
#xff08;1#xff09;xpath解析本地文件 #xff08;2#xff09;xpath解析服务器响应的数据 
①获取百度网站的“百度一下”四个字 
②获取站长素材网站情侣图片前十页的…目录 
0.xpath最新下载地址和安装教程 
1.xpath安装 
2.xpath基本使用 
3.xpath基本语法 
4.实例 
1xpath解析本地文件 2xpath解析服务器响应的数据 
①获取百度网站的“百度一下”四个字 
②获取站长素材网站情侣图片前十页的图片 0.xpath最新下载地址和安装教程 https://blog.csdn.net/laosao_66/article/details/131752611 1.xpath安装 注意提前安装xpath插件 1打开chrome浏览器 2点击右上角小圆点 3更多工具 4扩展程序 5拖拽xpath插件到扩展程序中 6如果crx文件失效需要将后缀修改zip 7再次拖拽 8关闭浏览器重新打开 9ctrl  shift  x 10出现小黑框 2.xpath基本使用 xpath解析分为两种 一种是解析本地文件     方法为etree.parse  另一种是解析服务器响应的数据 即从response.read().decode(utf-8) 里解析这种用的多        方法为etree.HTML() 1安装lxml库 pip install lxml ‐i https://pypi.douban.com/simple2导入lxml.etree from lxml import etree3etree.parse() 解析本地文件 html_tree  etree.parse(XX.html)4etree.HTML() 服务器响应文件 html_tree  etree.HTML(response.read().decode(utf‐8)5html_tree.xpath(xpath路径) 3.xpath基本语法 路径查询   //查找所有子孙节点不考虑层级关系                  / 找直接子节点谓词查询   //div[id] //div[idmaincontent] 属性查询   //class模糊查询   //div[contains(id, he)] //div[starts‐with(id, he)]内容查询   //div/h1/text()逻辑运算   //div[idhead and classs_down] //title | //price 4.实例 
1xpath解析本地文件 
本地 HTML文件 
!DOCTYPE html
html langen
headmeta charsetUTF-8/titleTitle/title
/head
bodyulli id11 classc1北京/lili id12上海/lili idc3深圳/lili idc4武汉/li/ul ! --    ul--! --        li大连/li--! --        li锦州/li--! --        li沈阳/li--! --    /ul--/body
/htmlxpath解析本地文件  
from lxml import etree# xpath解析
# 1本地文件                                                etree.parse
# 2服务器响应的数据  response.read().decode(utf-8) *****   etree.HTML()# xpath解析本地文件
tree  etree.parse(爬虫_解析_xpath的基本使用.html)#tree.xpath(xpath路径)# 查找ul下面的li
li_list  tree.xpath(//body/ul/li)# 查找所有有id的属性的li标签
# text()获取标签中的内容
li_list  tree.xpath(//ul/li[id]/text())# 找到id为l1的li标签  注意引号的问题
li_list  tree.xpath(//ul/li[idl1]/text())# 查找到id为l1的li标签的class的属性值
li  tree.xpath(//ul/li[idl1]/class)# 查询id中包含l的li标签
li_list  tree.xpath(//ul/li[contains(id,l)]/text())# 查询id的值以l开头的li标签
li_list  tree.xpath(//ul/li[starts-with(id,c)]/text())#查询id为l1和class为c1的
li_list  tree.xpath(//ul/li[idl1 and classc1]/text())li_list  tree.xpath(//ul/li[idl1]/text() | //ul/li[idl2]/text())# 判断列表的长度
print(li_list)
print(len(li_list)) 2xpath解析服务器响应的数据 
①获取百度网站的“百度一下”四个字 
# 1 获取网页的源码
# 2 解析   解析的服务器响应的文件  etree.HTML
# (3)  打印import urllib.requesturl  https://www.baidu.com/headers  {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
}# 请求对象的定制
request  urllib.request.Request(url  url,headers  headers)# 模拟浏览器访问服务器
response  urllib.request.urlopen(request)# 获取网页源码
content  response.read().decode(utf-8)# 解析网页源码 来获取我们想要的数据
from lxml import etree# 解析服务器响应的文件
tree  etree.HTML(content)# 获取想要的数据  xpath的返回值是一个列表类型的数据
result  tree.xpath(//input[idsu]/value)[0]# 这样写也可以xpath路径可以在选中区域后右键直接copy
# result  tree.xpath(//*[idsu]//value)[0]    print(result) 
②获取站长素材网站情侣图片前十页的图片 注一般涉及图片的网站都会进行懒加载 # (1) 请求对象的定制
# 2获取网页的源码
# 3下载# 需求 下载的前十页的图片
# https://sc.chinaz.com/tupian/qinglvtupian.html   1
# https://sc.chinaz.com/tupian/qinglvtupian_page.htmlimport urllib.request
from lxml import etreedef create_request(page):if(page  1):url  https://sc.chinaz.com/tupian/qinglvtupian.htmlelse:url  https://sc.chinaz.com/tupian/qinglvtupian_  str(page)  .htmlheaders  {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36,}request  urllib.request.Request(url  url, headers  headers)return requestdef get_content(request):response  urllib.request.urlopen(request)content  response.read().decode(utf-8)return contentdef down_load(content):
#     下载图片# urllib.request.urlretrieve(图片地址,文件的名字)tree  etree.HTML(content)name_list  tree.xpath(//div[idcontainer]//a/img/alt)# 一般涉及图片的网站都会进行懒加载src_list  tree.xpath(//div[idcontainer]//a/img/src2)for i in range(len(name_list)):name  name_list[i]src  src_list[i]url  https:  srcurllib.request.urlretrieve(urlurl,filename./loveImg/  name  .jpg)if __name__  __main__:start_page  int(input(请输入起始页码))end_page  int(input(请输入结束页码))for page in range(start_page,end_page1):# (1) 请求对象的定制request  create_request(page)# 2获取网页的源码content  get_content(request)# 3下载down_load(content)