如何从网页制作屏幕截图?
How to make screenshot from web page?
如何从任何url(网页)截屏?
我正在尝试:
from .ghost import Ghost
ghost = Ghost(wait_timeout=4)
ghost.open('http://www.google.com')
ghost.capture_to('screen_shot.png')
结果:
No module named '__main__.ghost'; '__main__' is not a package
我也在尝试:
Python Webkit making web-site screenshots using virtual framebuffer
Fastest way to take a screenshot with python on windows
Take a screenshot of open website in python script
我也尝试过这里没有列出的其他方法。
没有成功。或者找不到错误或模块.. or or or。
我累了。 Python 3.X?
有没有简单的网页截图方法
upd1:
C:\prg\PY\PUMA\tests>py save-web-html.py
Traceback (most recent call last):
File "save-web-html.py", line 2, in <module>
from .ghost import Ghost
ModuleNotFoundError: No module named '__main__.ghost'; '__main__' is not a package
upd2:
C:\prg\PY\PUMA\tests>py save-web-html.py
Exception ignored in: <bound method Ghost.__del__ of <ghost.ghost.Ghost object at 0x0000020A169CF860>>
Traceback (most recent call last):
File "C:\Users\Coar\AppData\Local\Programs\Python\Python36\lib\site-packages\ghost\ghost.py", line 325, in __del__
self.exit()
File "C:\Users\Coar\AppData\Local\Programs\Python\Python36\lib\site-packages\ghost\ghost.py", line 315, in exit
self._app.quit()
AttributeError: 'NoneType' object has no attribute 'quit'
Traceback (most recent call last):
File "save-web-html.py", line 4, in <module>
ghost = Ghost(wait_timeout=4)
TypeError: __init__() got an unexpected keyword argument 'wait_timeout'
在 80 年代后期,这可能是一项简单的任务,只需将一些 html 渲染到图像而不是屏幕上。
但是最近 web-pages 需要 client-side 执行构建它的部分 DOM 和 re-render 基于 client-side 发起的 AJAX (或等效)请求...这是一个完整的事情 "web 2.0" 事情。
渲染 web-site 如 http://google.com as a simple html return should be easy, but rendering something like https://www.facebook.com/ or https://www.kogan.com/ 将有许多返回和第四个通信来显示您期望看到的内容。
因此将其限制为纯粹的 python 解决方案可能不太合理;我不知道 python-based 浏览器。
考虑 运行 一个单独的服务来获取屏幕截图,并使用您的核心应用程序(在 python 中)获取请求的屏幕截图。
我刚刚尝试了一些 docker,其中许多都与 https
和上述 ajax
行为作斗争。
earlyclaim/docker-manet appears to work demo page
编辑:根据您的评论,您需要使用第二个请求呈现的图表中的数据。
你只需要 json return 来自 https://www.minnowbooster.net/limit/chart
try:
from urllib.request import urlopen # py3
except ImportError:
from urllib2 import urlopen # py2
import json
url = 'https://www.minnowbooster.net/limit/chart'
response = urlopen(url)
data_str = response.read().decode()
data = json.loads(data_str)
print(data)
如何从任何url(网页)截屏?
我正在尝试:
from .ghost import Ghost
ghost = Ghost(wait_timeout=4)
ghost.open('http://www.google.com')
ghost.capture_to('screen_shot.png')
结果:
No module named '__main__.ghost'; '__main__' is not a package
我也在尝试:
Python Webkit making web-site screenshots using virtual framebuffer
Fastest way to take a screenshot with python on windows
Take a screenshot of open website in python script
我也尝试过这里没有列出的其他方法。 没有成功。或者找不到错误或模块.. or or or。 我累了。 Python 3.X?
有没有简单的网页截图方法upd1:
C:\prg\PY\PUMA\tests>py save-web-html.py
Traceback (most recent call last):
File "save-web-html.py", line 2, in <module>
from .ghost import Ghost
ModuleNotFoundError: No module named '__main__.ghost'; '__main__' is not a package
upd2:
C:\prg\PY\PUMA\tests>py save-web-html.py
Exception ignored in: <bound method Ghost.__del__ of <ghost.ghost.Ghost object at 0x0000020A169CF860>>
Traceback (most recent call last):
File "C:\Users\Coar\AppData\Local\Programs\Python\Python36\lib\site-packages\ghost\ghost.py", line 325, in __del__
self.exit()
File "C:\Users\Coar\AppData\Local\Programs\Python\Python36\lib\site-packages\ghost\ghost.py", line 315, in exit
self._app.quit()
AttributeError: 'NoneType' object has no attribute 'quit'
Traceback (most recent call last):
File "save-web-html.py", line 4, in <module>
ghost = Ghost(wait_timeout=4)
TypeError: __init__() got an unexpected keyword argument 'wait_timeout'
在 80 年代后期,这可能是一项简单的任务,只需将一些 html 渲染到图像而不是屏幕上。
但是最近 web-pages 需要 client-side 执行构建它的部分 DOM 和 re-render 基于 client-side 发起的 AJAX (或等效)请求...这是一个完整的事情 "web 2.0" 事情。
渲染 web-site 如 http://google.com as a simple html return should be easy, but rendering something like https://www.facebook.com/ or https://www.kogan.com/ 将有许多返回和第四个通信来显示您期望看到的内容。
因此将其限制为纯粹的 python 解决方案可能不太合理;我不知道 python-based 浏览器。 考虑 运行 一个单独的服务来获取屏幕截图,并使用您的核心应用程序(在 python 中)获取请求的屏幕截图。
我刚刚尝试了一些 docker,其中许多都与 https
和上述 ajax
行为作斗争。
earlyclaim/docker-manet appears to work demo page
编辑:根据您的评论,您需要使用第二个请求呈现的图表中的数据。
你只需要 json return 来自 https://www.minnowbooster.net/limit/chart
try:
from urllib.request import urlopen # py3
except ImportError:
from urllib2 import urlopen # py2
import json
url = 'https://www.minnowbooster.net/limit/chart'
response = urlopen(url)
data_str = response.read().decode()
data = json.loads(data_str)
print(data)