网站首页 > 技术文章 正文
假设我爬取了这样的一个html网页,前面的前端代码如下所示:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OK资源采集-最新影视资源大全</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="OK资源采集-最新影视资源大全" />
<meta name="description" content="OK资源采集-最新影视资源大全" />
<script>var SitePath='/',SiteAid='10',SiteTid='',SiteId='';</script>
<link href="/template/okokzy/css/home.css" rel="stylesheet" type="text/css" />
<script src="/template/okokzy/js/jquery_ldg.js"></script>
<script src="/template/okokzy/js/jquery.zclip.min.js"></script>
<script src="/template/okokzy/js/ldg.js"></script>
<script src="/js/jq/jquery.lazyload.js"></script>
<script src="/template/okokzy/js/home.js"></script>
</head>
我们想要获取其中的script标签后面的内容,因此我们可以使用Xpath来获取,假设我们想要获得第一个script标签处的值value,就可以使用表达式:
Xpath(/html/head/script/text())[0]
这个表达式的含义是输出在html下的head下的第一个script标签处的文字,因为我们前面的代码:
Xpath(/html/head/script/text())
会输出所有以script开头的对象,因此加上[0]限定为第一个script后面的文字。
因此输出为:
var SitePath='/',SiteAid='10',SiteTid='',SiteId='';
在Xpath表达式当中'//' 表示前面的省略不计,直接跳过两层或者多层拿到后面的标签中所对应的对象。
二.标签属性的使用
假设我们想要爬取font标签当中具备某个color属性的文字内容,如下所示:
<font color="#000000">OK资源站
</font><font color="#FF0000">HTTPS</font><font color="#000000"> 站请进入>>></font></a></font><font size=
font这个标签之后显然会有很多不同的color,但是我们只想要这里color为“#000000”后面的文字内容,因此我们使用这样的表达式:
r_two=tree.xpath('//font[@color="#000000"]/text()')
这样就饿可以了。整体的代码如下所示:
import requests
from lxml import etree
post_url = 'https://www.okzy10.com/'
#cookie='lastCity=100010000; __zp_stoken__=ce26bZyQcLhoDK1A7M0RzPzMQEDJzHHpAQCJkUHtpSSFDSCkNeko0HBZxSywqeBxlHh8PIE4CLwgTSWsacwcdbEMNUBBzE2APASkfAktgOFskSn9HCTgkLmE7GFxecS8MGE4FGX99IHdsQHV5YQ%3D%3D; __c=1610949395; __g=-; __l=l=%2Fwww.zhipin.com%2F&r=https%3A%2F%2Fwww.google.com%2F&g=&s=3&friend_source=0&s=3&friend_source=0; __a=13532184.1600828409.1610683874.1610949395.205.23.3.205; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1610082805,1610683875,1610949395,1610949407; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1610949407'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36',
}
#解析本地的html
#使用etree.parse
#解析网页上的html
#使用etree.HTML
req = requests.get(post_url,headers=headers)
#print(req.text)
with open('ok_resource.html','w',encoding='utf-8') as fp:
fp.write(req.text)
#使用xpath表达式对etree对象进行解析
parser = etree.HTMLParser(encoding="utf-8")
tree=etree.parse('ok_resource.html',parser=parser)
r=tree.xpath('/html/head/script/text()')[0]
r_two=tree.xpath('//font[@color="#000000"]/text()')
print(r)
print(r_two)
猜你喜欢
- 2024-11-14 Playwright自动化测试工具之元素定位实战
- 2024-11-14 利器 | AppCrawler 自动遍历测试实践(二):定制化配置
- 2024-11-14 java组件HuTool相关工具类的使用二
- 2024-11-14 手把手教你爬取热门小说《诡秘之主》
- 2024-11-14 Python爬虫之xpath用法全解析(py xpath)
- 2024-11-14 怎么用xpath写drissionpage?或者用相对位置?
- 2024-11-14 通过python+Xpath实现抓取某网站推荐的歌曲
- 2024-11-14 Python自动化工具(python写自动化工具)
- 2024-11-14 web自动化测试——xpath常用案例(web自动化测试平台)
- 2024-11-14 手把手教你如何用Python爬取网站文本信息
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 505℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 484℃MySQL service启动脚本浅析(r12笔记第59天)
- 465℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 462℃启用MySQL查询缓存(mysql8.0查询缓存)
- 442℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 422℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)