原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想)
希望让调用方通过 http调用传入一个需要生成图片的网页链接生成一个网页的图片并返回图片链接
最终调用方式比如:http://127.0.0.1:8888/cgi-bin/test.py?url=http://www.csdn.net/
上述范例打开之后返回的是 http://www.csdn.net/ 这个网页最终生成的图片的链接
这么做的目的就是让调用的人几乎不用动脑,当然实现这个的人也会觉得牛逼哄哄:)
要实现上述这个思想,分解一下就需要实现以下功能:
1、需要做一个网站
2、这个网站还需要能执行 python的脚本也就是说要具备cgi处理功能
3、需要一个代码能对给定的网址保存为图片
4、我们需要一款简单又可靠的又能执行python脚本的web server
通过google.com经过一番对python的简单了解之后我们发现上述四个目标其实都非常简单:
1、python自带了一个cgi web server启动方式非常之简单,基本上只需要小学文化:
在linux终端或这windows的dos窗口运行: python -m CGIHTTPServer 8888
就实现了目标1和目标2
2、测试一下我们的这个web server究竟管用不管用
在当前目录下建立一个index.html 输入it works!
好了在浏览器中输入:http://127.0.0.1:8888/index.html
看到了吧,就这么简单,仅需小学文化水平:)
3、建立一个简单的python脚本程序,让浏览器能够打开,同时也能接收一个url参数
比如:http://127.0.0.1:8888/cgi-bin/pycgidemo.py?url=http://www.csdn.net/
在当前目录下建立一个目录cgi-bin 然后在里面建立一个文本文件:pycgidemo.py 输入:
#!/usr/bin/env python
=======================================pycgidemo.py====begin========================
# -*- coding: utf-8 -*-
import os
import io
import time
import JSInjection
from PIL import Image
from selenium import webdriver
import html2image
import uuid
if __name__ == '__main__':
v = [i for i in os.environ.iteritems()]
print('env is %s' %(repr(v)))
qs={k:v for k,v in [l.split('=') for l in os.environ['QUERY_STRING'].split('&')]}
print('Content-type: text/html\n')
print('<title>pycgidemo</title>')
print('Hello World<br/>')
print(qs['url'])
quit()
=======================================pycgidemo.py====end============&#