爬虫神器xpath的用法(二)
2024-10-12 23:45:44
爬取网页内容的时候,往往网页标签比较复杂,对于这种情况,需要用xpath的starts-with和string(.)功能属性来处理,具体看事例
#encoding=utf-8
from lxml import etree
html1 = '''
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="test-1">需要的内容1</div>
<div id="test-2">需要的内容2</div>
<div id="testfault">需要的内容3</div>
</body>
</html>
'''
#提取id属性为test开头的的内容,需要使用xpath的start-with属性
selector = etree.HTML(html1)
content = selector.xpath('//div[starts-with(@id,"test")]/text()')
for each in content:
print each #提取多个标签层级的内容,需要使用xpath的string(.)将内容转为字符串再获取
html2 = '''
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="test3">
我左青龙,
<span id="tiger">
右白虎,
<ul>上朱雀,
<li>下玄武。</li>
</ul>
老牛在当中,
</span>
龙头在胸口。
</div>
</body>
</html>
'''
selector1 = etree.HTML(html2)
data = selector1.xpath('//div[@id="test3"]')[0]
info = data.xpath('string(.)')
content = info.replace('\n','').replace(' ','')
print content
输出:
需要的内容1
需要的内容2
需要的内容3
我左青龙,右白虎,上朱雀,下玄武。老牛在当中,龙头在胸口。
最新文章
- 【JUC】JDK1.8源码分析之ConcurrentSkipListMap(二)
- 扩展 ASP.NET MVC 模型扩展 &ndash; ASP.NET MVC 4 系列
- textField设置输入文字距左边的距离
- http - referer
- [转]Stop Sharing Session State between Multiple Tabs of Browser
- 用C#制作推箱子小游戏
- Sqlserver数据库总结
- jacob下载问题, Office word 此文件正由另一应用程序或用户使用的解决方法
- JS中阻止默认事件与事件冒泡
- 注销CA登录
- 【转】 bash简介及通配符、扩展通配符 shopt -s extglob
- 【转】ButterKnife基本使用--不错
- Linux桌面快捷方式建立方案
- DataBindings 与 INotifyPropertyChanged 实现自动刷新 WinForm 界面
- 自己动手写Java大整数《3》除法和十进制转换
- 浅谈MySQL的优化
- 《javascript语言精粹》读书笔记 Item2 对象
- weblogic 安装部署详解
- nginx强制使用https访问(http跳转到https)
- VSCode换行符
热门文章
- perl小记
- Git使用文档
- java有符号无符号的转换
- img图片放大控件 lightbox.js
- lab 7 函数超级多的类
- wiredtiger - hazard pointers
- 6.4 APK包限制
- CentOS6.5 解压安装 二进制分发版 mysql-5.5.49-linux2.6-x86_64.tar.gz
- dojo对数组的处理函数,dojo.forEach、dojo.every、 dojo.some、 dojo.map等
- 找出字符串中第一个不重复的字符(JavaScript实现)