从Python中获取请求中的数据提取数据
问题描述:
我在一个使用与index.html网页相同的目录中执行的python脚本的树莓派中获得了SimpleHTTPServer。代码如下:从Python中获取请求中的数据提取数据
#!/usr/bin/python
import SimpleHTTPServer
import SocketServer
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import httplib2
PORT = 8080
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
一旦加载网页时,它开始发送数据不同的GET请求,我需要用我的python脚本来读取,但我不知道该怎么做。
这是获取请求的示例;
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /ok.png HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /red.png HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /arduino/start/0.16388046142178503 HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:07] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:07] "GET /favicon.ico HTTP/1.1" 404 -
10.8.0.6 - - [27/Nov/2016 11:18:17] code 404, message File not found
10.8.0.6 - - [27/Nov/2016 11:18:17] "GET /arduino/update/0.6913944096802204 HTTP/1.1" 404 -
不要担心404错误,看来是因为该网,我并没有把目录但因为我在做测试不同的图标。
原因是因为我想这样做,这是因为我正在“翻译”网络服务器来控制电磁阀和我在Arduino Yun上工作的不同传感器。在arduino中,代码读取获取请求,并根据获取请求获取请求以及使用传感器数据请求XML数据包或响应阀门。
在arduino上,将“获取”请求作为字符串“捕获”的代码如下:
if (client) { // got client?
String request = client.readString();
request.trim();
然后程序在字符串中查找一个单词,并根据发现哪个单词使用不同的信息进行响应。一个例子;
if (request=="inicial") {
// send rest of HTTP header
client.println("Content-Type: text/xml");
client.println("Connection: keep-alive");
client.println();
// send XML file containing input states
inicial(client);
}
Summaraizing,我想读的GET请求在我的Python脚本中的字符串,并从中提取数据,然后响应与XML,但我认为这最后一步将是更好地在互联网上解释这样我不担心它。
我希望我的解释足够清楚。
谢谢!
答
这是如何向地址发送请求的。响应对象被分配给变量。然后你可以从中提取任何你想要的东西。
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
你想解析网络服务器日志消息吗? – MYGz
这将是一个选项。 – gcp900