服务截图

saas的Python项目详细描述


SaaS-服务截图 src=

saas demo

安装

要求

保险丝

什么是保险丝?从融合wikipedia页面 < Buff行情>

用户空间中的文件系统(fuse)是类unix计算机操作系统的软件接口,允许非特权用户创建自己的文件系统,而无需编辑内核代码。这是通过在用户空间中运行文件系统代码来实现的,而fuse模块只提供到实际内核接口的"桥梁"。

fuse用于安装一个合成文件系统,以读取给定给saas的url的照片。saas用文件和目录动态地填充用户空间文件系统。fuse是这个组件的一个不错的选择,因为它可以很容易地集成到几乎任何工作流中,请在api部分中阅读更多关于这个组件的信息。

弹性搜索

elasticsearch用作saas的存储后端。有关存储的详细信息,请参见存储部分

imagemagick

imagemagick用于优化保存到磁盘的图像文件。这是一个可选依赖项,因为它仅在使用--optimize storage标志时使用。

Linux

1.使用Docker安装ElasticSearch

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4

2.安装Firefox和Geckodriver

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/

3。安装ImageMagick(可选)

sudo apt-get install imagemagick

4。安装SaaS

# Make sure you have Python 3.7 installed!
python --version
# Python 3.7.2

pip install saas

saas --version
# saas 1.1.3.1

Mac操作系统

1.安装MacOS保险丝

从官方网站(推荐)或使用自制的

brew update
brew tap homebrew/cask
brew cask install osxfuse

2.安装ElasticSearch

brew install elasticsearch

3。安装Firefox和Geckodriver

从官方网站或使用自制软件

brew cask install firefox

4。安装壁虎

brew install geckodriver

5。安装python 3.7

brew install python3
python3 --version
# Python 3.7.2

6个。安装ImageMagick(可选)

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
0

<强>7.安装SaaS

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
1

用法

入门

启动ElasticSearch

每次运行SaaS时,您必须确保有一个ElasticSearch实例正在运行,并且SaaS可以连接到Available。

如果使用Docker
sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
2
如果路径中存在二进制
sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
3

拍摄单个url的照片
sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
4

使用爬虫程序

爬虫程序是一个很有用的工具,可以找到新的网址来获取图片。它可以配置为运行wild并对它遇到的任何域进行爬网,或者保持在输入文件中url所属的域中。

留在域中

使用--stay at domain标记,爬网程序将丢弃不属于同一域的任何域,因为该域与在其上找到的页不属于同一域。

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
5

重置数据

因为挂载的文件系统是只读文件系统,所以只需删除目前无法从文件系统中取出照片。

至少现在,清除数据目录和索引的最佳方法是使用--clear data dir--clear elasticsearch选项

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
6

了解有关存储的更多信息

设置视区大小

可以使用--viewport width--viewport height选项来调整相机视口。

默认情况下,相机会尝试拍摄全屏截图。这意味着它可以计算出页面的高度,并相应地调整相机的高度。全屏截图的时间要长得多,尤其是在图像密集的网站上。

选项的完整列表

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
7

储存

saas使用两种类型的存储。用于存储照片文件和弹性搜索照片元数据和URL的常规目录。

弹性搜索

弹性搜索实例由saas配置,具有三个索引

  • 已爬网此索引保存爬网程序已访问的URL、HTTP响应代码和任何锁(意味着任何摄影师线程正在拍摄该URL的照片)
  • 未绘制的此索引包含爬虫程序已访问的网页中的刮取的URL
  • 照片此索引包含照片元数据、文件大小、捕获位置、文件名等。

数据目录

当saas响应目录列表时,它只需要查询elasticsearchphotos索引。只有在发出读取请求时,才会从数据目录中获取实际的文件内容。数据目录保存原始照片数据,每个照片都有一个唯一的id。此目录的默认路径是~/.saas data dir

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
8

构建

通过从源代码克隆saas来安装它

sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:6.5.4
9

Firefox扩展

camera模块使用selenium呈现页面。为了提高SaaS的性能,SaaS使用ublock origin来阻止广告。为了更方便地访问更多的网页,SaaS使用来绕过弹出窗口和GDPR Consent表单。许多网站还采用付费墙的做法,为他们的一些内容,然而,许多网站让他们的网站开放给来自搜索引擎和社交媒体网站的用户。因此,saas有一个小的自定义的firefox扩展来重写firefox发出的所有http请求,使其包含头referer:https://google.com-这将允许访问更多的web内容。

更新ublock原点

从gorhill/ublock releases中下载最新的ublock.xpi,并替换extensions/目录中的版本。

更新idcac

使用Firefox从https://www.i-dont-care-about-cookies.eu/" rel="nofollow">https://www.i-dont-care-about-cookies.eu/下载并安装最新版本。在firefox的extensions目录中找到.xpi文件,在macos上这是~/library/application support/firefox/profile s/[profile]/extensions/。将.xpi文件复制到extensions/目录。

引用头

对源文件进行压缩存档

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/
0

运行测试套件

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/
1

运行类型检查器

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/
2

API

使用fuse的主要原因是saas的api是文件系统。所有可以与文件系统交互的东西都可以与saas交互。几乎每种编程语言都附带了对文件系统的简单访问,因此在任何环境中的集成都与对文件系统的读写一样简单。

例如,通过http接口公开saas可以像sta一样简单像下面这样的超级简单节点服务(在生产中肯定比这更彻底)。

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/
3

这将允许通过调用如下服务添加要爬网的新url

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/
4

启动一个简单的python web服务器可以允许遍历saas文件系统

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/
5

这是集成/扩展SaaS的百分之二的方法。

性能和可扩展性

SaaS设计用于运行多台计算机。在一个集群中添加的saas节点数量实际上是无限的,它们只需要一个公共的elasticsearch实例或集群,以及一个公共的数据目录。ElasticSearch以其可扩展性而闻名,例如,数据目录可以是它们共享的网络驱动器、Amazon EFS或任何其他在机器之间共享驱动器的方式。

因为集群中的所有节点共享相同的索引和数据目录,所以它们都可以读取集群作为一个整体产生的图像。节点也可以自由加入和离开群集,而不会造成任何长时间的数据丢失。

对性能影响最大的是拍摄图像重的站点或使用大的视区大小。固定的视窗大小是一个很好的优化性能的选择,几乎没有上限,一个网站可以有多大的垂直。小报网站或无限滚动网站的屏幕截图大小可轻松达到25-50 MB。

查看指南最大化SaaS吞吐量了解如何在AWS上部署大型SaaS节点群集并优化性能的详细指南。

示例

有关测试SaaS的一些好例子,请参见示例/

已知问题

在某些情况下,例如致命的崩溃,挂载的文件系统可能不会自动卸载。另外,如果其他进程当前正在从文件系统读取数据,则文件系统将无法卸载。

如果遇到此问题,请运行

sudo apt-get install firefox

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -xvzf geckodriver-v0.23.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/bin/
6

许可证

麻省理工学院版权所有Ludwig Kristofersson

有关详细信息,请参见许可文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有多用户OU和多访问CNs的java Spring LDAP身份验证   java分配的变量神秘地变为null   java比较两个表或文本文件,并用行号和列输出差异   java如何在同一构建目录中设置netbeans中的文件路径?   java如何在avro模式中定义byte[]和LocalDateTime?   java在多个活动和片段中使用相同的微调器。实施它的最佳方式是什么?   java使用OOPS扩展已编写的类   java如何在特定于文件的基础上禁用Eclipse中的编译器警告?   java将字符串转换为日期的格式不正确   Java文件从一台服务器复制到另一台服务器   java Jacksonal和JacksonApperasl的最新jar版本是什么?   java如何在使用selenium chrome web驱动程序时禁用chrome中的身份验证提示   java是什么。推荐人和推荐人。Eclipse工作区中的元数据以及它们是否应该在设备之间同步?   java我应该把sqlite db文件放在哪里,这样我的jar就可以访问它了?这对连接字符串有何影响?   java如何在选择单元格时设置JTable标题背景色   java Cassandra 2 Hector:复合行键上的范围切片查询返回空行   java方法注释继承   Python字节对象与java   java Android和从sqlite数据库加载listview