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
snake8090
V2EX  ›  Python

一个关于动态页面爬取的问题!

  •  
  •   snake8090 · 2019-07-10 15:22:31 +08:00 · 2663 次点击
    这是一个创建于 1992 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚开始学习爬虫,上次有大佬在 V2 发了表情包的网站,今天想爬点表情包玩,发现加载页面是滚动加载的,看了下 network 加载的内容, Request URL 这里的内容复制放到新页面地址栏无法加载,找不到思路了 ,求大佬解答! 之前爬别的滚动加载的页面,可以通过 Request URL 里的地址在新的页面打开,这种第一次遇见。 而且这个地址的内容和原本的页面地址也找不到关联的地方。

    13 条回复    2019-07-10 20:10:50 +08:00
    different
        1
    different  
       2019-07-10 15:26:41 +08:00
    一方面看是不是 POST 请求(看你的截图就是 post )

    另一方面看看请求头(服务端可能检测来源等等)

    所以直接复制到新页面地址栏当然无法加载。
    Karpov
        2
    Karpov  
       2019-07-10 15:42:27 +08:00
    可以考虑 puppeteer 这种实现
    https://juejin.im/post/5ba1e99e6fb9a05d2b6db2eb
    yamedie
        3
    yamedie  
       2019-07-10 15:54:55 +08:00
    @Karpov 这种小站感觉根本不需要动用 puppeteer..
    node.js + super agent 扒列表, 随便找一个下载文件的包(比如 download), 就能完成这种任务
    snake8090
        4
    snake8090  
    OP
       2019-07-10 15:59:41 +08:00
    @different
    @Karpov
    @yamedie
    有什么方法是可以实现自动翻页的吗?
    我观察了一下翻页的结果,翻页到最后之后,可以在整个页面提取到所有的表情包 URL,
    根据这个思路是不是可以先请求分类标签的 url 地址,然后翻页到最后,再从返回的内容里提取所有的图片 url 地址成一个列表再遍历下载?
    Imlry
        5
    Imlry  
       2019-07-10 16:01:41 +08:00
    随手帮你写了。。。
    https://imgur.com/a/P57H3Qi
    Eric5845191
        6
    Eric5845191  
       2019-07-10 17:21:36 +08:00
    这个接口只支持 post 请求,直接放在地址栏是 get 请求,所以报错
    snake8090
        7
    snake8090  
    OP
       2019-07-10 17:31:05 +08:00
    Karpov
        8
    Karpov  
       2019-07-10 19:44:21 +08:00
    试了一下,这个请求还对 body 有要求:

    POST /api/expressions/list?pageNum=1& pageSize=100000 HTTP/1.1
    Host: www.bqber.com
    Content-Type: application/json
    User-Agent: PostmanRuntime/7.15.2
    Accept: */*
    Cache-Control: no-cache
    Postman-Token: 5ab5da52-bf5d-4d78-937b-80f914c0f34d,e7915629-e679-4617-912d-729dc02dc82e
    Host: www.bqber.com
    Accept-Encoding: gzip, deflate
    Content-Length: 13
    Connection: keep-alive
    cache-control: no-cache

    {"name":null}

    这样发过去就行了
    zgl263885
        9
    zgl263885  
       2019-07-10 19:56:27 +08:00 via iPhone
    自动翻页只是前端用户界面的一种实现方式,根本的还是得看做了哪些网络请求
    trustbutverify
        10
    trustbutverify  
       2019-07-10 19:57:10 +08:00 via iPhone
    试试 pychrome
    whoami9894
        11
    whoami9894  
       2019-07-10 19:57:34 +08:00 via Android
    楼上都好有耐心。。。
    ClericPy
        12
    ClericPy  
       2019-07-10 20:10:21 +08:00
    对 python 来说,复制 curl bash,然后随便找个或者自己写个 curl Parser 发给 requests 就够了
    ClericPy
        13
    ClericPy  
       2019-07-10 20:10:50 +08:00
    写爬虫不管是靠它吃饭还是随便玩玩,http 那本书还是稍微读一下的好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:13 · PVG 03:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.