设为首页收藏本站

XPath定位:如何避免class中包含空格的问题

[复制链接]
5028 0
本帖最后由 gavin 于 2017-4-22 23:05 编辑

前言
在讲述今天遇到的问题之前,先啰嗦几句。先来说说什么是xpath。xpath是一种W3C标准,用来解析XML、HTML非常方便。今天gavin想抓取某网站中的招聘信息,结果有一个字段怎么都获取不了,其实我可以用别的方法绕过遇到的这个问题的,但是Gavin解决不了这个心里不舒服,为嘛我100%确定是正确的写法,偏偏输出的结果和预期不一样呢?反正是周六,哥有的是时间,下楼喝袋花花牛,回来继续干,就不信治不了它,哼~


经过一番细致的测试,问题根源终于被Gavin找到了,详细过程请往下看。


我要做的功能

我的最终目标

我的最终目标


我遇到的问题
  1. sel = Selector(text=html)
  2. title = sel.xpath('//p[@class="t1"]/span/a/text()')
  3. print title
复制代码
运行的结果如下图所示:

我遇到的问题

我遇到的问题


我找到原因了
请看第一张图,请仔细看。你发现了什么?我发现一个问题:写前端页面的这孩子,手好贱,他在t1后边多加了一个空格。。。


  1. title = sel.xpath('//p[@class="t1"]/span/a/text()') #我把这里的“t1” 修改成  "t1 "估计就好了
复制代码
先不猜测,运行看看。

问题找到了

问题找到了

果然是这个空格的问题,你说写前端页面的这孩子为什么这么不认真,为什么,为什么写的代码格式如此不规整,难怪2008年的时候微软公司从我们班只招了一个仔细认真的妹子。(兴许微软觉得可以不聪明,不能不认真)

如何预防这样的问题
为了预防这样的问题,我可能以后会这样写代码
  1. title = sel.xpath('//p[contains(@class,"t1")]/span/a/text()')
复制代码
个人建议:在使用xpath查找元素时,不要依赖浏览器的xpath定位,那个定位作为参考可以,若直接使用,真是惨不忍睹。例如:上述xpath浏览器给出的定位是“//*[@id='resultList']/div[8]/p/span/a”

举报 使用道具

回复
搜索
热搜: java python UI HTML5

图文热点

客服中心

4006-371-555 周一至周六 9:00-19:00

关注我们

  • 关注官方微博
  • 关注官方微信
友情链接
快速回复 返回顶部 返回列表