beautifulsoup网页爬虫解析_爬虫入门到精通-网页的解析(xpath)

e9efd3c165e3b286e068ef71476efdf4.png

本文章属于爬虫入门到精通系统教程第六讲

在爬虫入门到精通第五讲中,我们了解了如何用正则表达式去抓取我们想要的内容.这一章我们来学习如何更加简单的来获取我们想要的内容.

xpath的解释

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。

XPath的基本使用

要使用xpath我们需要下载lxml,在爬虫入门到精通-环境的搭建这一章也说明怎么装,如果还没有安装的话,那就去下载安装吧

直接看代码实战吧。

from 

相对路径与绝对路径

97768a6ff8854f8dc0480e0b04bba048.png

0be439f52d2aa21e969ca9de887cd2f0.png

总结及注意事项

  • 获取文本内容用 text()
  • 获取注释用 comment()
  • 获取其它任何属性用@xx,如
    • @href
    • @src
    • @value
sample2 = """
<html>
  <body>
    <ul>
      <li>Quote 1</li>
      <li>Quote 2 with <a href="...">link</a></li>
      <li>Quote 3 with <a href="...">another link</a></li>
      <li><h2>Quote 4 title</h2> ...</li>
    </ul>
  </body>
</html>
"""
s2 = getxpath(sample2)

73105dbe161b59d6d8d3a9144e81c56b.png

总结及注意事项

  • 上面的li 可以更换为任何标签,如 p、div
  • 位置默认以1开始的
  • 最后一个用 li[last()] 不能用 li[-1]
  • 这个一般在抓取网页的下一页,最后一页会用到
sample3 

ca994ffa0db9783a36ddff16116dec89.png

总结及注意事项

  • 根据html的属性或者文本直接定位到当前标签
  • 文本是 text()='xxx'
  • 其它属性是@xx='xxx'
  • 这个是我们用到最多的,如抓取知乎的xsrf(见下图)
    • 我们只要用如下代码就可以了//input[@name="_xsrf"]/@value

04e2d5c8930fc4fd868787ac1fcb1940.png
sample4 

130914b70cf384b987251a7d1db30436.png

总结及注意事项

  • 想要获取某个标签下所有的文本(包括子标签下的文本),使用string
    • 如 <p>123<a>来获取我啊</a></p>,这边如果想要得到的文本为"123来获取我啊",则需要使用string
  • starts-with 匹配字符串前面相等
  • contains 匹配任何位置相等
  • 当然其中的(@class,"content")也可以根据需要改成(text(),"content")或者其它属性(@src,"content")

最后再次总结一下

看完本篇文章后,你应该要

  • 能学会基本所有的xpath的使用
  • css和这个的原理一样,所以就不介绍了,可以参考
    • CSS 选择器参考手册
  • 所有代码在kimg1234/pachong

欢迎关注本人的微信公众号获取更多Python爬虫相关的内容

(可以直接搜索「写bug的高师傅」)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值