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

小弟写一个爬虫爬网站中的列表数据,但是列表数据时延迟加载的,这个怎么爬呢?各位兄弟姐妹看过来!

  •  
  •   cuikangyuan · 2016-03-17 22:25:17 +08:00 · 3443 次点击
    这是一个创建于 2953 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟正在写一个爬虫,已经到达了要爬取的地址,该页面有一个 list ,目标时爬取这个 list 中的数据, 可恶的是,这个 list 的数据是动态加载的,也就是说页面渲染完毕之后 list 部分显示 loading 。。 并不显示数据,造成目前卡在 发 get 请求 只能 得到这个 list 里 的 loading 。。。字符串

    实际上 在浏览器中 这个 list 会在页面打开之后 一定时间后刷出 列表的数据 , 这样的数据 该怎么 爬取呢??

    10 条回复    2016-03-18 14:56:06 +08:00
    zentorwie
        1
    zentorwie  
       2016-03-17 23:30:32 +08:00
    一个有效但是性能不是很好的做法是用 PhantomJS 模拟浏览器。
    zentorwie
        2
    zentorwie  
       2016-03-17 23:31:49 +08:00
    忘了说是 selenium+PhantomJS
    alansalexer
        3
    alansalexer  
       2016-03-17 23:38:28 +08:00
    1. casperjs
    2. python webkit
    exoticknight
        4
    exoticknight  
       2016-03-17 23:45:32 +08:00
    前几天刚用 node 和 phantomjs 搞类似的东西
    你可以试试
    另外一个思路是抓 ajax 请求,自己模拟
    cuikangyuan
        5
    cuikangyuan  
    OP
       2016-03-18 09:00:25 +08:00
    @zentorwie 好的 我试试
    cuikangyuan
        6
    cuikangyuan  
    OP
       2016-03-18 09:01:17 +08:00
    @exoticknight 哈哈 没学过 nodejs ,用的 beautifulsoup 和 requests
    zerowxxyf
        7
    zerowxxyf  
       2016-03-18 09:10:16 +08:00   ❤️ 1
    简单点的做法是抓包,找到获取数据的地址就 so easy 啦
    cuikangyuan
        8
    cuikangyuan  
    OP
       2016-03-18 09:19:26 +08:00
    @zerowxxyf 恩 ,找到 那个 地址 啦
    3dwelcome
        9
    3dwelcome  
       2016-03-18 10:34:15 +08:00   ❤️ 1
    网易就是啊,内容是 ajax 动态刷的,你用 GET 取一个静态界面完全没意义。其实就如楼上说的,用 webkit 模拟一个浏览器呗,然后再把 rendertree 导出来。
    wlsnx
        10
    wlsnx  
       2016-03-18 14:56:06 +08:00
    F12 看 ajax
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3427 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:05 · PVG 08:05 · LAX 17:05 · JFK 20:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.