从零开始爬取500w(二)----XPath

adrootrr 2月前 134

解析html的工具有很多。今天试验一个非常容易理解的xml解析工具----XPath.


XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的


本文不深入去了解XPath的语法,可以自行去看文档,咱们只举例来进行XPath入门,那需要在脑海里要有个概念,XPath的语法由三大类组成:

1 .层级概念:
"/" 代表直接子级或者说直接节点,"//" 代表非直接节点
2.属性概念:
"@" 代表属性
3.函数概念:
"contains()"  代表属性包含摸个值
"text()" 代表提取文本标签


Just Do It~ 咱们直接在浏览器里去试验

打开浏览器访问:

打开浏览器的开发者工具。(我用的chrome,快捷键是ctrl+shift+i)我想要的是下面这种一条条的数据



看一下Elements里会发现这些数据是在一个个<tr>标签里面。他们的上层是一个<tbody>标签




按ctrl+F,搜索框是可以搜索字符串,选择器和XPath。
咱们把所有tr找出来。由于tbody不是位于顶层的直接子节点,那么用"//",tr是tbody的直接节点那么用"/",ok,那么在搜索框输入
//tbody[@id="main-tbody"]/tr
找出来了,^_^



细心的人会发现,其实这个页面是有109场比赛。为什么结果是218. 其实因为同级还有个tr标签里面展示了赔率.

我只需要有a标签的部分,要他的欧洲赔率,为什么不要"亚”的?因为看不懂亚洲指数



修改上面的XPath为:


//tbody[@id="main-tbody"]/tr/td/a[contains(@href,'ouzhi')]



ok,能搜到109场比赛的欧指了。并且还使用了contains,大家也理解下为什么用"/td/a"


下一篇文章咱们就会在scrapy里面来使用这个xpath


最后于 2月前 被adrootrr编辑 ,原因:
最新回复 (1)
  • 愚人乙 2月前
    0 引用 2
    等待更新......
    • 运维开源项目互助社区—致敬开源
      3
        立即登录 立即注册 
返回