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

不使用无头浏览器, python3 在 Linux 环境下如何对网页进行截图?

  •  
  •   daxin945 · 2023-09-15 11:08:19 +08:00 · 3288 次点击
    这是一个创建于 421 天前的主题,其中的信息可能已经有所发展或是发生改变。
    46 条回复    2023-10-03 22:03:45 +08:00
    deorth
        1
    deorth  
       2023-09-15 11:18:26 +08:00 via Android   ❤️ 5
    那就使用有头浏览器
    SenLief
        2
    SenLief  
       2023-09-15 11:20:58 +08:00 via iPhone
    没看懂?是已经打开的浏览器截图?
    specture
        3
    specture  
       2023-09-15 11:25:55 +08:00   ❤️ 1
    不适用浏览器难道自己解析 html,css,js?
    specture
        4
    specture  
       2023-09-15 11:26:18 +08:00
    要么就用远程浏览器 RBI?
    youngce
        5
    youngce  
       2023-09-15 11:27:36 +08:00
    Linux 装个桌面,然后再装个浏览器,打开浏览器,然后 python 截取系统屏幕🤣类似 rpa 吧
    danbai
        6
    danbai  
       2023-09-15 11:27:42 +08:00
    能问下为啥不使用无头浏览器呢
    ysc3839
        7
    ysc3839  
       2023-09-15 11:28:52 +08:00 via Android   ❤️ 1
    那问题就变成定义问题了,“浏览器”具体的定义是什么?自己实现一个解析渲染 Web 的程序算不算“浏览器”?
    micookie
        8
    micookie  
       2023-09-15 11:31:43 +08:00
    可以使用 PhantomJS ,实际上还是使用的无头浏览器。
    cy18
        9
    cy18  
       2023-09-15 11:46:19 +08:00
    这居然是个哲学问题:“什么是浏览器”?
    Yadomin
        10
    Yadomin  
       2023-09-15 11:51:03 +08:00 via Android
    用 python 写个 html/css parser + render ,但那不就是无头浏览器了🌚
    matepi
        11
    matepi  
       2023-09-15 11:58:09 +08:00   ❤️ 2
    能发送返回 http 就是浏览器

    能解析 html 就是浏览器

    能 render 页面就是浏览器

    能执行 js 等动态脚本才是浏览器

    来画个九宫格?
    cxh116
        12
    cxh116  
       2023-09-15 12:13:16 +08:00 via Android
    给钱给别人,调用付费 api 截。
    jetflyL
        13
    jetflyL  
       2023-09-15 12:22:30 +08:00
    之前用过一个 java 的库,就是可以解析 html ,css 文件生成图片的,当然有些没有浏览器渲染这么完美。python 的不知道有没有,要是有类似的可以直接请求网页,在渲染出来
    vastwelkin
        14
    vastwelkin  
       2023-09-15 12:22:35 +08:00 via Android
    @deorth 正解
    0o0O0o0O0o
        15
    0o0O0o0O0o  
       2023-09-15 12:35:42 +08:00 via iPhone
    那就 xvfb+有头浏览器
    shijingshijing
        16
    shijingshijing  
       2023-09-15 12:43:51 +08:00
    直接手搓 v8 引擎吧
    wonderfulcxm
        17
    wonderfulcxm  
       2023-09-15 12:46:25 +08:00 via iPhone
    有些网站提供截图的 API 服务,你传参调用就行了
    nowheremanx
        18
    nowheremanx  
       2023-09-15 12:47:08 +08:00
    这里建议您用 python 重新写一个浏览器。
    hazardous
        19
    hazardous  
       2023-09-15 13:04:43 +08:00
    搭个 splash 服务,甭管它内部怎么实现,从我们看来就只是个 API
    getcharch
        20
    getcharch  
       2023-09-15 13:04:43 +08:00   ❤️ 1
    hefish
        21
    hefish  
       2023-09-15 13:09:29 +08:00
    不想吃东西,但是我现在很饿,大家有没有好的办法?对了,必须用 python 。
    JingW
        22
    JingW  
       2023-09-15 13:40:26 +08:00
    可以人肉解析 HTML+CSS+JS ,然后画出来拍照上传。
    louis16s
        23
    louis16s  
       2023-09-15 13:42:36 +08:00   ❤️ 1
    playwright 这个库?
    tolbkni
        24
    tolbkni  
       2023-09-15 13:52:05 +08:00
    @getcharch 有没有可能这个也依赖无头浏览器
    Nich0la5
        25
    Nich0la5  
       2023-09-15 13:58:47 +08:00
    为什么不用无头浏览器,这应该是实现路径而不是本源问题
    bigbigpark
        26
    bigbigpark  
       2023-09-15 14:10:16 +08:00   ❤️ 1
    wkhtmltoimage 可以了解一下这个
    jones2000
        27
    jones2000  
       2023-09-15 14:38:30 +08:00
    CEF 搞一个不就行了。 加载完成屏幕截图。
    daxin945
        28
    daxin945  
    OP
       2023-09-15 14:40:56 +08:00
    @danbai 我现在对网页截图用的 selenium 以及火狐的无头浏览器,但是火狐会在使用的时候对境外 IP 发起请求。用户那边对网络要求严格,所以要对功能调整下。
    daxin945
        29
    daxin945  
    OP
       2023-09-15 14:41:52 +08:00
    @micookie 感谢您的回复 我也考虑过 只不过 selenium 的新版本不太支持 所以就没动手 不过现在看来需要试试了
    daxin945
        30
    daxin945  
    OP
       2023-09-15 14:44:25 +08:00
    @jones2000 感谢您分享的思路 我去学习下
    daxin945
        31
    daxin945  
    OP
       2023-09-15 14:45:16 +08:00
    @hefish 您的讽刺很到位 祝您工作顺利
    lkwfive
        32
    lkwfive  
       2023-09-15 15:02:53 +08:00
    @daxin945 换个思路,拦截 境外 IP 发起的请求?
    daxin945
        33
    daxin945  
    OP
       2023-09-15 15:08:39 +08:00
    @lkwfive 服务器上有监控软件 拦截了也能看到 QAQ
    makerbi
        34
    makerbi  
       2023-09-15 15:13:10 +08:00   ❤️ 1
    用 playwright 控制,所有请求都可以拦截
    danbai
        35
    danbai  
       2023-09-15 15:16:48 +08:00
    @daxin945 #28 这个根本是网络的问题,你完全可以用其他的 Chromium 浏览器或者在浏览器外面套一层代理拦截境外请求。
    Masoud2023
        36
    Masoud2023  
       2023-09-15 15:19:59 +08:00
    chromium 呢? chromium 没谷歌遥测吧,应该没请求吧
    daxin945
        37
    daxin945  
    OP
       2023-09-15 15:21:15 +08:00
    @Masoud2023 服务器是国产服务器 arm 架构的 QAQ
    daxin945
        38
    daxin945  
    OP
       2023-09-15 15:22:05 +08:00
    @danbai 感谢您的思路 我也在尝试拦截 但是就怕拦截的不干净 还在测试
    Masoud2023
        39
    Masoud2023  
       2023-09-15 15:27:38 +08:00
    @daxin945 #37 arm 有什么问题吗,chromium 有 aarch64 build 啊
    Masoud2023
        40
    Masoud2023  
       2023-09-15 15:28:11 +08:00
    你再不信任这玩意,那就把他 pull 下来自己 review ,把遥测代码全删了,编译打包
    daxin945
        41
    daxin945  
    OP
       2023-09-15 15:36:52 +08:00
    @Masoud2023 那我做调研的时候 肯定是失误了 没看到 chromium 的 aarch64 build 我再去搜搜 感谢您的回复
    Masoud2023
        42
    Masoud2023  
       2023-09-15 15:53:12 +08:00   ❤️ 1
    nevermoreluo
        43
    nevermoreluo  
       2023-09-15 16:03:11 +08:00   ❤️ 1
    怕拦不干净的话 要不参考下 gfwlist, 没想到这玩意儿还有反向应用

    https://github.com/gfwlist/gfwlist
    https://github.com/breakwa11/gfw_whitelist
    cbythe434
        44
    cbythe434  
       2023-09-15 16:26:04 +08:00
    网页截图必须渲染吧,能渲染网页的都叫浏览器,所以你想问啥。。。
    yuanchao
        45
    yuanchao  
       2023-09-22 16:15:06 +08:00   ❤️ 1
    可以用第三方的,比如这家还不错 https://www.uscreenshot.com/
    lete
        46
    lete  
       2023-10-03 22:03:45 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1934 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:19 · PVG 00:19 · LAX 08:19 · JFK 11:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.