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

用 requests 抓取 ngacn.cc 页面内容 error

  •  
  •   heloman · 2015-10-14 11:14:55 +08:00 · 2245 次点击
    这是一个创建于 3364 天前的主题,其中的信息可能已经有所发展或是发生改变。

    打算抓取 http://bbs.ngacn.cc/thread.php?fid=-7&page=1 里面的帖子,找出热点帖子。 python 写了脚本,但运行时总是出错。

    代码如下:

    https://gist.github.com/anonymous/99ef5fb95bd8e4c72f1d

    抓取分两步,第一次直接抓的页面里面有 js 在 url 上附加一个 rand 参数之后再次加载,但第二次抓取总是报错:

    https://gist.github.com/anonymous/2ea6d51690926641501f

    6 条回复    2015-10-15 09:54:40 +08:00
    ksupertu
        1
    ksupertu  
       2015-10-14 13:47:49 +08:00 via iPad
    Phantomjs
    liiihhhh
        2
    liiihhhh  
       2015-10-14 14:04:21 +08:00
    heloman
        3
    heloman  
    OP
       2015-10-14 16:23:59 +08:00
    @liiihhhh 多谢! 看到 lite=xml 可以直接获得 xml ,但是查看 fid=-7 的页面总是要有一次再次加载的过程,手动构造了加 rand 的 url 但还是 get 数据出错,这个怎么破?
    比如
    http://bbs.ngacn.cc/thread.php?fid=7&lite=xml&page=1&rand=996
    这个可以直接访问
    但是
    http://bbs.ngacn.cc/thread.php?fid=-7&lite=xml&page=1&rand=996
    这个 url 已经附加了 rand 参数,但还是报错
    heloman
        4
    heloman  
    OP
       2015-10-14 16:25:41 +08:00
    @ksupertu 这个好牛!似乎太复杂的样子~ 我现在已经附加参数模拟 js 行为了,应该和用 Phantomjs 效果一致吧,但还是出错
    liiihhhh
        5
    liiihhhh  
       2015-10-15 09:13:11 +08:00
    @heloman 加 rand=996 这个参数是干嘛的? http://bbs.ngacn.cc/thread.php?fid=7&lite=xml&page=1&rand=996 可以获得数据啊
    heloman
        6
    heloman  
    OP
       2015-10-15 09:54:40 +08:00
    @liiihhhh 试试 fid=-7 , js 里这个分两步加载,第二步的请求里附加了 rand
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:40 · PVG 20:40 · LAX 04:40 · JFK 07:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.