V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wowpanda
V2EX  ›  Python

请教一个 python 爬虫的小问题

  •  
  •   wowpanda · 2016-01-03 16:51:16 +08:00 · 3991 次点击
    这是一个创建于 3034 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT ,我用 pyquery 爬知乎主页,然后因为貌似知乎主页是异步加载的(浏览器拉到底部,它就自动加载更多的条目),我只能获取大概 20 个问题。
    请问怎么做能获取更多的问题呢?(点一下那个“更多”的按钮,然后就爬到更多的问题)
    19 条回复    2016-01-06 11:38:24 +08:00
    cdwyd
        1
    cdwyd  
       2016-01-03 16:54:21 +08:00
    f12,点一下按钮,看请求
    wowpanda
        2
    wowpanda  
    OP
       2016-01-03 16:59:40 +08:00
    @cdwyd 在下拉过程中,它就会自动加载更多的内容啊,这个怎么做?
    just1
        3
    just1  
       2016-01-03 17:03:20 +08:00 via Android
    其实跟 python 一点关系都没有,应该到问与答
    just1
        4
    just1  
       2016-01-03 17:03:58 +08:00 via Android
    分析加载更多的请求,模拟就可以了
    bdbai
        5
    bdbai  
       2016-01-03 17:07:44 +08:00 via iPhone
    f12,点一下按钮,看请求
    vmebeh
        6
    vmebeh  
       2016-01-03 17:08:39 +08:00
    其实是 js 监听页面滚动,当滚动到页面底部时 ajax 请求更多内容添加到 dom 树
    F12 查看 XHR 可破
    saberlion
        7
    saberlion  
       2016-01-03 17:45:44 +08:00 via Android
    爬知乎有很多程序
    woorz
        8
    woorz  
       2016-01-03 17:58:07 +08:00
    知科有 api 的吧
    wowpanda
        9
    wowpanda  
    OP
       2016-01-03 19:29:07 +08:00
    @saberlion 额, github 上没搜到爬主页的啊,另外我也想自己写,不太想看别人写的
    ianisme
        10
    ianisme  
       2016-01-03 19:44:53 +08:00
    抓他们的 APP 看看
    cheneydog
        11
    cheneydog  
       2016-01-03 19:47:31 +08:00
    ajax 的更好做了
    Caratpine
        12
    Caratpine  
       2016-01-03 19:57:58 +08:00
    补充一点 HTTP 协议相关的知识,如 1 , 6 楼所说打开开发者工具,看看异步加载时,发生的 HTTP 请求。
    ![zhihu]( http://i4.tietuku.com/e6bd5419681e5fca.png)
    wowpanda
        13
    wowpanda  
    OP
       2016-01-03 20:22:28 +08:00
    @Caratpine 非常感谢
    geekqiao
        14
    geekqiao  
       2016-01-03 20:31:51 +08:00   ❤️ 1
    首页的内容是 post 到“ https://www.zhihu.com/node/TopStory2FeedList ”,
    带有表单数据: params , method 和_xsrf 。
    7sDream
        15
    7sDream  
       2016-01-03 20:46:28 +08:00
    https://github.com/7sDream/zhihu-py3

    随便看一个需要异步加载的内容是咋获取的。

    比如 answer 的 upvoter 函数,稍微看一下应该就会啦。

    (另外,「不想看别人写的」这个想法稍微有点走偏了呀~~其实提问和看代码没有本质不同呐)
    wowpanda
        16
    wowpanda  
    OP
       2016-01-03 22:36:54 +08:00
    @7sDream 哈哈,我的意思是想尽量通过提问或者资料来思考怎么写,要不然一上来就看别人写的代码总觉得是不是偷懒的行为。另外,我也是卡在了爬主页上,所以就没有考虑去看 upvoter 是怎么弄得,^_^)
    wd0g
        17
    wd0g  
       2016-01-03 22:52:10 +08:00
    一般的都有规,你越往下拉某个参数的值越大或越小
    自己多拉几次页面,对比下 URL 就知道了
    lixiaohan
        18
    lixiaohan  
       2016-01-04 10:10:41 +08:00
    都是有规则的请求 应该是 offset 变化 你可以模拟一下
    waner55
        19
    waner55  
       2016-01-06 11:38:24 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3465 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:00 · PVG 19:00 · LAX 04:00 · JFK 07:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.