推荐学习书目
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 · Jul 10, 2019 · 3509 views
    This topic created in 2529 days ago, the information mentioned may be changed or developed.

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

    13 replies    2019-07-10 20:10:50 +08:00
    different
        1
    different  
       Jul 10, 2019
    一方面看是不是 POST 请求(看你的截图就是 post )

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

    所以直接复制到新页面地址栏当然无法加载。
    VjZ6b8ld9OB5PLB0
        2
    VjZ6b8ld9OB5PLB0  
       Jul 10, 2019
    可以考虑 puppeteer 这种实现
    https://juejin.im/post/5ba1e99e6fb9a05d2b6db2eb
    yamedie
        3
    yamedie  
       Jul 10, 2019
    @Karpov 这种小站感觉根本不需要动用 puppeteer..
    node.js + super agent 扒列表, 随便找一个下载文件的包(比如 download), 就能完成这种任务
    snake8090
        4
    snake8090  
    OP
       Jul 10, 2019
    @different
    @Karpov
    @yamedie
    有什么方法是可以实现自动翻页的吗?
    我观察了一下翻页的结果,翻页到最后之后,可以在整个页面提取到所有的表情包 URL,
    根据这个思路是不是可以先请求分类标签的 url 地址,然后翻页到最后,再从返回的内容里提取所有的图片 url 地址成一个列表再遍历下载?
    Imlry
        5
    Imlry  
       Jul 10, 2019
    随手帮你写了。。。
    https://imgur.com/a/P57H3Qi
    Eric5845191
        6
    Eric5845191  
       Jul 10, 2019
    这个接口只支持 post 请求,直接放在地址栏是 get 请求,所以报错
    snake8090
        7
    snake8090  
    OP
       Jul 10, 2019
    VjZ6b8ld9OB5PLB0
        8
    VjZ6b8ld9OB5PLB0  
       Jul 10, 2019
    试了一下,这个请求还对 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  
       Jul 10, 2019 via iPhone
    自动翻页只是前端用户界面的一种实现方式,根本的还是得看做了哪些网络请求
    trustbutverify
        10
    trustbutverify  
       Jul 10, 2019 via iPhone
    试试 pychrome
    whoami9894
        11
    whoami9894  
       Jul 10, 2019 via Android
    楼上都好有耐心。。。
    ClericPy
        12
    ClericPy  
       Jul 10, 2019
    对 python 来说,复制 curl bash,然后随便找个或者自己写个 curl Parser 发给 requests 就够了
    ClericPy
        13
    ClericPy  
       Jul 10, 2019
    写爬虫不管是靠它吃饭还是随便玩玩,http 那本书还是稍微读一下的好
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2771 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 12:05 · PVG 20:05 · LAX 05:05 · JFK 08:05
    ♥ Do have faith in what you're doing.