爬取网页内容的时候,往往网页标签比较复杂,对于这种情况,需要用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
我左青龙,右白虎,上朱雀,下玄武。老牛在当中,龙头在胸口。

最新文章

  1. 【JUC】JDK1.8源码分析之ConcurrentSkipListMap(二)
  2. 扩展 ASP.NET MVC 模型扩展 &ndash; ASP.NET MVC 4 系列
  3. textField设置输入文字距左边的距离
  4. http - referer
  5. [转]Stop Sharing Session State between Multiple Tabs of Browser
  6. 用C#制作推箱子小游戏
  7. Sqlserver数据库总结
  8. jacob下载问题, Office word 此文件正由另一应用程序或用户使用的解决方法
  9. JS中阻止默认事件与事件冒泡
  10. 注销CA登录
  11. 【转】 bash简介及通配符、扩展通配符 shopt -s extglob
  12. 【转】ButterKnife基本使用--不错
  13. Linux桌面快捷方式建立方案
  14. DataBindings 与 INotifyPropertyChanged 实现自动刷新 WinForm 界面
  15. 自己动手写Java大整数《3》除法和十进制转换
  16. 浅谈MySQL的优化
  17. 《javascript语言精粹》读书笔记 Item2 对象
  18. weblogic 安装部署详解
  19. nginx强制使用https访问(http跳转到https)
  20. VSCode换行符

热门文章

  1. perl小记
  2. Git使用文档
  3. java有符号无符号的转换
  4. img图片放大控件 lightbox.js
  5. lab 7 函数超级多的类
  6. wiredtiger - hazard pointers
  7. 6.4 APK包限制
  8. CentOS6.5 解压安装 二进制分发版 mysql-5.5.49-linux2.6-x86_64.tar.gz
  9. dojo对数组的处理函数,dojo.forEach、dojo.every、 dojo.some、 dojo.map等
  10. 找出字符串中第一个不重复的字符(JavaScript实现)