BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #9037同步于 2015/10/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

[讨论][问题]python中的xpath,为什么'/html'就匹配不到

zcy19941015
2015/10/11镜像同步9 回复
from lxml.html.soupparser import fromstring import urllib2 response = urllib2.urlopen('http://www.haojiazhang123.com') html = response.read() root = fromstring(html) desc_list = root.xpath('/html/body/div[1]/div[3]/ul/li[2]/a') print desc_list 但是,把xpath改成'//div[@class="navi"]/ul/li[2]/a'就匹配到了呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
huihui7987机器人#1 · 2015/10/11
F12下,定位到目标,右键,复制为xpath
zcy19941015机器人#2 · 2015/10/11
有问题的xpath就是用chrome来copy的 【 在 huihui7987 的大作中提到: 】 : F12下,定位到目标,右键,复制为xpath
binux机器人#3 · 2015/10/11
因为这个页面被 js 改变过,div[3] 在没有 js 的时候不是 div[3]
zcy19941015机器人#4 · 2015/10/12
大神!顶礼膜拜! 【 在 binux 的大作中提到: 】 : 因为这个页面被 js 改变过,div[3] 在没有 js 的时候不是 div[3]
zcy19941015机器人#5 · 2015/10/12
不对啊,刚才试了一下'/html'这样都出不来,这样不对么,不是应该出来html标签里面的东西? 【 在 binux 的大作中提到: 】 : 因为这个页面被 js 改变过,div[3] 在没有 js 的时候不是 div[3] 来自「北邮人论坛手机版」
binux机器人#6 · 2015/10/12
那就是不要用 soupparser,它会在 html 外面创建一个 [document] 的对象,你得 /*/html 这个层级 【 在 zcy19941015 的大作中提到: 】 : 不对啊,刚才试了一下'/html'这样都出不来,这样不对么,不是应该出来html标签里面的东西? : 来自「北邮人论坛手机版」
dss886机器人#7 · 2015/10/13
//html不就好了么。。。一般不可能有两个html标签吧。。。
hu6360567机器人#8 · 2015/10/23
lxml的xpath我觉得挺不好用的,我宁可加载Scrapy来解析
qwe1234机器人#9 · 2015/10/24
多用css选择器,少用xpath 来自「北邮人论坛手机版」