1
2
mirror of https://github.com/vimagick/dockerfiles synced 2024-07-03 00:33:55 +00:00
dockerfiles/splash/README.md

105 lines
2.4 KiB
Markdown
Raw Normal View History

2015-07-17 08:37:55 +00:00
splash
======
2017-01-06 10:13:03 +00:00
[Splash][1] is a javascript rendering service with an HTTP API. It's a
2015-07-17 08:37:55 +00:00
lightweight browser with an HTTP API, implemented in Python using Twisted and
QT.
It's fast, lightweight and state-less which makes it easy to distribute.
## docker-compose.yml
2017-01-06 10:13:03 +00:00
```yaml
2015-07-17 08:37:55 +00:00
splash:
2015-09-21 02:22:39 +00:00
image: scrapinghub/splash
2017-01-21 19:05:30 +00:00
command: --maxrss 4096 --max-timeout 300
2015-07-17 08:37:55 +00:00
ports:
- "8050:8050"
- "8051:8051"
- "5023:5023"
volumes:
2017-01-21 19:05:30 +00:00
- ./data/filters:/etc/splash/filters
- ./data/js-profiles:/etc/splash/js-profiles
- ./data/lua_modules:/etc/splash/lua_modules
- ./data/proxy-profiles:/etc/splash/proxy-profiles
mem_limit: 4608M
2015-07-17 08:37:55 +00:00
restart: always
```
## server
```
$ cd ~/fig/splash
$ tree
.
├── docker-compose.yml
2017-01-06 10:13:03 +00:00
└── data
2015-07-17 08:37:55 +00:00
├── filters
│   ├── easylist.txt
│   └── default.txt
├── js-profiles
└── proxy-profiles
2017-01-06 10:13:03 +00:00
$ cat data/filters/default.txt
2015-07-17 08:37:55 +00:00
||fonts.googleapis.com^
||ajax.googleapis.com^
$ docker-compose up -d
```
> If `default.txt` file is present in `--filters-path` folder it is used by default
> when filters argument is not specified. Pass `filters=none` if you dont want
> default filters to be applied.
## client
2017-01-06 10:13:03 +00:00
```lua
-- youtube-logo.lua
function main(splash)
splash:go('https://www.youtube.com/')
splash:wait(0.5)
local logo = splash:select('.logo')
return logo:png()
end
2015-07-17 08:37:55 +00:00
```
2017-01-21 19:05:30 +00:00
```lua
-- crop.lua
function main(splash)
local url = splash.args.url
local css1 = splash.args.css1
local css2 = splash.args.css2
assert(splash:go(url))
splash:set_viewport_full()
local box1 = splash:select(css1):bounds()
local box2 = splash:select(css2):bounds()
return splash:png{
region={
math.min(box1.left, box2.left),
math.min(box1.top, box2.top),
math.max(box1.right, box2.right),
math.max(box1.bottom, box2.bottom),
}
}
end
```
2017-01-06 10:13:03 +00:00
```bash
# whole page
2017-01-21 19:05:30 +00:00
$ http http://server:8050/render.png url==https://www.youtube.com/ > youtube.png
2017-01-06 10:13:03 +00:00
# only logo
$ http http://server:8050/execute lua_source=@youtube-logo.lua > youtube-logo.png
2017-01-21 19:05:30 +00:00
# only form
$ http http://server:8050/execute lua_source=@crop.lua \
url=https://www.facebook.com/ \
css1='#u_0_1' \
css2='#u_0_b' > facebook-form.png
2015-07-17 08:37:55 +00:00
```
[1]: http://splash.readthedocs.org/en/latest/