一般的网站建设,网站首页分辨率,上海网络推广培训学校,建筑网片产品资料目录
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)