V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaoyu9527
V2EX  ›  问与答

xpath 用什么软件能准确抓取?

  •  
  •   xiaoyu9527 · 2016-08-18 11:18:44 +08:00 · 2627 次点击
    这是一个创建于 3000 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 chrome 的 F12 抓 xpath 感觉跟别人写的不一样呀。

    17 条回复    2016-08-19 00:28:27 +08:00
    loading
        1
    loading  
       2016-08-18 11:44:55 +08:00 via Android
    能用就行啦,别人是自己优化过的, chrome 是自动的,当然不同。
    lgh
        2
    lgh  
       2016-08-18 12:28:53 +08:00
    用 XPath 定位某个元素的方法可能有无数种,但软件只能死板地生成一种,你觉得能让你满意的概率有多大?
    zencoding
        3
    zencoding  
       2016-08-18 14:28:44 +08:00 via Android
    有 chrome 扩展,一直在用
    xiaoyu9527
        4
    xiaoyu9527  
    OP
       2016-08-18 14:37:08 +08:00
    @zencoding 哪个扩展
    imn1
        5
    imn1  
       2016-08-18 15:13:37 +08:00
    同一个元素有很多种 xpath 写法的
    wgx
        6
    wgx  
       2016-08-18 15:48:09 +08:00
    您好,请问最近有看机会吗?国内 最大 的跨境快时尚电商公司 shein 招聘后台技术总监(带团队, python 开发),经验要求 5-10 年, 25k-40k ,五天七小时,下午茶,季度旅游,坐标深圳南山大学城。联系微信: 13226230923 ,邮箱 [email protected]
    changshu
        7
    changshu  
       2016-08-18 15:59:19 +08:00
    对于抓取 html 后的 xpath 选取, 以实调 html 为准, 浏览器 f12 提供的仅能做参考
    changshu
        8
    changshu  
       2016-08-18 16:00:57 +08:00
    原因忘写了

    一来浏览器提供的 dom 树可能被 js 修改过, 和你抓到的原生 html 不一致

    二浏览器会对抓取到的 html 做一定程度的修正, 和你抓到的原生 html 也有可能不一致
    xiaoyu9527
        9
    xiaoyu9527  
    OP
       2016-08-18 16:16:36 +08:00
    @wgx 资格不够呀。


    @changshu 请能帮我分析一下有啥不一样么? 我贴个例子

    //*[@id="maincontent"]/div[1]/div[1]/h2/a 我用 F12 COPY 出来是这样

    //h2/a/@href

    而这个蜘蛛的作者写的是这样。 虽然我看的明白 后者就是 //h2/a/href 跟我 最后两段一样。

    但是我不明白 如果我复制出来的这种 应该怎么写呢
    prefere
        10
    prefere  
       2016-08-18 16:26:15 +08:00
    // 从非根任意节点开始匹配
    * 匹配任意元素
    [@] 属性选择器
    [index] 匹配第 index-1 个元素
    laoyur
        11
    laoyur  
       2016-08-18 16:32:51 +08:00
    @xiaoyu9527 『如果我复制出来的这种 应该怎么写呢』
    没看懂你在问什么, 5 楼已经说了,同一个元素的 xpath 有 N 种写法,你要测试自己写的对不对,直接在 Elements tab 下按 Ctrl + F 搜索,然后输入你自己写的就行了
    prefere
        12
    prefere  
       2016-08-18 16:34:23 +08:00
    更正:最后一条错了,[index] 匹配第 index 个元素。
    xiaoyu9527
        13
    xiaoyu9527  
    OP
       2016-08-18 16:58:50 +08:00
    //div[1]/ul/*/div/h3/a 为什么这样抓不出来连接
    //div[1]/ul/*/div/h3/a/@href 就可以抓出来链接

    @href 这个是什么意思?
    laoyur
        14
    laoyur  
       2016-08-18 17:01:33 +08:00
    @xiaoyu9527 那还是建议你去看看 xpath 手册
    @href 的意思是 a 的 href 属性啊
    xiaoyu9527
        15
    xiaoyu9527  
    OP
       2016-08-18 18:37:17 +08:00
    @laoyur 我看了。。
    changshu
        16
    changshu  
       2016-08-18 20:27:53 +08:00
    @xiaoyu9527

    第一个是获取元素

    第二个是获取某元素的 href 属性

    xpath 本身的写法比较多, 好像老王的儿子也可以是老张的邻居一样, 没什么唯一的写法.

    一切以调试你获取的 html 为准, 别多管 chrome 给的提升.
    xiaoyu9527
        17
    xiaoyu9527  
    OP
       2016-08-19 00:28:27 +08:00
    @changshu 学习到了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1227 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:55 · PVG 01:55 · LAX 09:55 · JFK 12:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.