0le*_*leg 5 python simplehttpserver python-2.7 server
我想编写Python脚本,它将:
现在代码看起来像这样:
import SimpleHTTPServer
import SocketServer
import urllib
import urllib2
# Variables
URL = 'localhost:8000'
PORT = 8000
# Setup simple sever
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
# Getting HTML from the target page
values = {
'name': 'Thomas Anderson',
'location': 'unknown'
}
data = urlilib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
html = response.read()
Run Code Online (Sandbox Code Playgroud)
问题是,一旦我运行我的脚本
python -i foo.py
Run Code Online (Sandbox Code Playgroud)
它打印serving at port 8000然后冻结.我敢打赌这对于这里的Python专家来说是微不足道的,但是我们将不胜感激.
将服务器作为不同的进程运行,这将允许您运行脚本的其余部分。
我也宁愿使用requests而不是 urllib。
import SocketServer
import SimpleHTTPServer
import requests
import multiprocessing
# Variables
PORT = 8000
URL = 'localhost:{port}'.format(port=PORT)
# Setup simple sever
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "Serving at port", PORT
# start the server as a separate process
server_process = multiprocessing.Process(target=httpd.serve_forever)
server_process.daemon = True
server_process.start()
# Getting HTML from the target page
values = {
'name': 'Thomas Anderson',
'location': 'unknown'
}
r = requests.post(URL, data=values)
r.text
# stop the server
server_process.terminate()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17833 次 |
| 最近记录: |