2013-10-14 29 views
1

Reference to this question我想将一个MS Word(.doc)文件发送到作为服务运行的tika应用程序,我该怎么做?python将文件发送到作为服务运行的tika

有此链接运行蒂卡: http://mimi.kaktusteam.de/blog-posts/2013/02/running-apache-tika-in-server-mode/

但对于Python代码来访问它,我不知道我是否可以使用套接字或urllib的或者究竟是什么?

+0

是否有一个原因,你打算使用蒂卡应用服务器,而不是更全功能[提卡JAXRS服务器(HTTPS://wiki.apache。组织/蒂卡/ TikaJAXRS)? – Gagravarr

+0

这基本上是我设法在我的系统上安装的,因为我无法轻松安装新的东西 – hmghaly

回答

1

对于远程访问Tika,基本上有两种方法可用。一个是Tika JAXRS Server,它提供了一个完整的RESTful界面。另一个是简单的Tika-App --server mode,它只是在网络管道级别工作。

对于生产用途,您可能需要使用Tika JAXRS服务器,因为它的功能更为全面。对于简单的测试和入门而言,服务器模式下的Tika应用应该没问题

对于后者,只需连接到您正在运行Tika-App的端口,将其传输到您的文档数据中,然后阅读您的html返回。例如,在一个终端运行

$ java -jar tika-app-1.3.jar --server --port 1234 

然后,在另一个做

$ nc 127.0.0.1 1234 < test.pdf 

然后,您会看到HTML测试PDF的返回

从蟒蛇,你只想要一个简单的套接字调用就像netcat那样做,发送二进制数据,然后回读结果。例如,你可以试试:

#!/usr/bin/python 
import socket, sys 

# Where to connect 
host = '127.0.0.1' 
port = 1234 

if len(sys.argv) < 2: 
    print "Must give filename" 
    sys.exit(1) 

filename = sys.argv[1] 
print "Sending %s to Tika on port %d" % (filename, port) 

# Connect to Tika 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((host,port)) 

# Open the file to send 
f = open(filename, 'rb') 

# Stream the file to Tika 
while True: 
    chunk = f.read(65536) 
    if not chunk: 
    # EOF 
    break 
    s.sendall(chunk) 

# Tell Tika we have sent everything 
s.shutdown(socket.SHUT_WR) 

# Get the response 
while True: 
    chunk = s.recv(65536) 
    if not chunk: 
    # EOF 
    break 
    print chunk 
+0

很酷,谢谢,你能告诉我如何在套接字中做到这一点?我真的很感激它。 – hmghaly

+1

添加了Python示例代码,希望它有帮助! – Gagravarr

+0

是的,这就是我基本需要的,非常感谢你:) – hmghaly

相关问题