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

需要网页加载了图片后才能通过链接打开爬取怎么解决呢?

  •  
  •   bananahotell · 2022 年 9 月 5 日 · 4327 次点击
    这是一个创建于 1226 天前的主题,其中的信息可能已经有所发展或是发生改变。

    业余爱好者,学 python 爬图片,看到美女图片网站 v2ph.com 练练手,但发现爬下来的图片很小、没内容,但是链接又是对的,最后才发现,即使把链接复制到浏览器里也无法打开,而是要打开原网页,一直下拉,把图片都加载出来了之后,才能通过链接打开图片。 所以,请教各位大佬,这样的情况怎么解决?

    29 条回复    2022-09-10 20:53:36 +08:00
    we21x
        1
    we21x  
       2022 年 9 月 5 日
    估计是图片懒加载的问题。img 元素有个 data-src 属性,看看是不是原图的 URL ,如果是取这个属性就行
    sutra
        2
    sutra  
       2022 年 9 月 5 日
    打开浏览器的 Developer Tools ,看看 Network ?
    p1956
        3
    p1956  
       2022 年 9 月 5 日
    data\-src\=\"(.+?)\"
    bananahotell
        4
    bananahotell  
    OP
       2022 年 9 月 5 日
    @we21x 是抓的 data-src 属性,而且这个就是图片的链接,但是无法下载,而且如我所说,即使把这个属性链接直接在浏览器里也无法打开图片,需要打开原图的网页,并在把这个图加载出来之后,才能打开
    bananahotell
        5
    bananahotell  
    OP
       2022 年 9 月 5 日
    @sutra 那里面太专业东西的不懂,但是我直接查看网页源码是能看到图片链接的,不是通过 JavaScript 加载的。(或者说是其他什么问题?)
    bananahotell
        6
    bananahotell  
    OP
       2022 年 9 月 5 日
    @p1956 获取链接的正则?但我的问题不在于没获取到链接
    bananahotell
        7
    bananahotell  
    OP
       2022 年 9 月 5 日
    我仔细想了一下,我直接把图片链接复制到浏览器里打不开图片,但不是弹的 404 ,而是提示“access denied 。。。”,估计是网站的设置,防爬取
    foam
        8
    foam  
       2022 年 9 月 5 日
    header 带上 referer 就可以了
    referer: https://www.v2ph.com/
    p1956
        9
    p1956  
       2022 年 9 月 5 日
    p1956
        10
    p1956  
       2022 年 9 月 5 日
    发现有 cf 盾,挺麻烦的
    imicksoft
        11
    imicksoft  
       2022 年 9 月 6 日
    量不大就模拟网页浏览采集
    Tink
        12
    Tink  
    PRO
       2022 年 9 月 6 日 via Android
    直接模拟网页吧
    bananahotell
        13
    bananahotell  
    OP
       2022 年 9 月 6 日 via iPhone
    之前爬过豆瓣,经过这个网站和各位的回复,才发现爬虫还有太多东西,怪不得能写一大本书,最近买了本,慢慢啃了再来研究
    bestmos
        14
    bestmos  
       2022 年 9 月 6 日   ❤️ 1
    @bananahotell F12+捕获都不会那建议先学一下计算机网络基础
    ijrou
        15
    ijrou  
       2022 年 9 月 6 日
    一想到就是懒加载,,,看来你爬虫的技术不太行啊
    sutra
        16
    sutra  
       2022 年 9 月 6 日
    哦,才看到 OP 说是“业余爱好者”。不过像 Developer Tools 里那些基本用法肯定避不开的。
    opengps
        17
    opengps  
       2022 年 9 月 6 日
    知道了一个新网站
    tankren
        18
    tankren  
       2022 年 9 月 6 日
    谷歌“爬虫 懒加载” 然后抄
    我也是业余的 给单位的计划和财务写了几个小工具 大大减少人工时间 还是挺有成就感的
    fumichael
        19
    fumichael  
       2022 年 9 月 6 日
    这些全是图片的网站,一般会做防盗链处理,图片请求空 referer 是不会返回,可以看看请求 header 中是否有携带 referer
    vite
        20
    vite  
       2022 年 9 月 6 日
    戳开看了下,不单是 lazyload 和 referer 的问题,有 cloudflare 防护,新手建议还是换个站上手吧...
    fbichijing
        21
    fbichijing  
       2022 年 9 月 6 日
    刚试了一下,图片链接的话 data-src ,爬取的时候加个 referer 就不会 403
    codingBug
        22
    codingBug  
       2022 年 9 月 6 日
    有时间,我也爬一爬
    zoofy
        23
    zoofy  
       2022 年 9 月 6 日
    加 referer headers 就解决了
    bananahotell
        24
    bananahotell  
    OP
       2022 年 9 月 7 日
    @foam
    @fumichael
    @fbichijing
    @zoofy 果然,加个 referer 解决问题,感谢各位
    bananahotell
        25
    bananahotell  
    OP
       2022 年 9 月 7 日
    不对,乌龙了,加了 referer 也不行
    Dart
        26
    Dart  
       2022 年 9 月 9 日
    楼主怎么样了,我也在抓 v2ph , 能交流下吗?
    Dart
        27
    Dart  
       2022 年 9 月 9 日
    bananahotell
        28
    bananahotell  
    OP
       2022 年 9 月 9 日
    @Dart 没成功,我准备把崔庆才写的那本网络爬虫书看了再来
    Joeith
        29
    Joeith  
       2022 年 9 月 10 日
    直接用 puppeteer 解决一切问题。 反正小项目,不用考虑效率的问题。用时效换安全
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5735 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:52 · PVG 10:52 · LAX 18:52 · JFK 21:52
    ♥ Do have faith in what you're doing.