python将文件发送到作为服务运行的tika

python将文件发送到作为服务运行的tika,python,web-services,apache-tika,Python,Web Services,Apache Tika,我想将MS Word(.doc)文件发送到作为服务运行的tika应用程序,如何执行此操作 运行tika时有以下链接: 但是对于访问它的python代码,我不确定是否可以使用套接字或urllib,或者确切地说是什么?对于远程访问Tika,基本上有两种方法可用。一个是,它提供了一个完整的RESTful接口。另一个是simple,它只在网络管道级别工作 对于生产使用,您可能需要使用Tika JAXRS服务器,因为它的功能更加全面。对于简单的测试和入门,服务器模式下的Tika应用程序应该可以 对于后者

我想将MS Word(.doc)文件发送到作为服务运行的tika应用程序,如何执行此操作

运行tika时有以下链接:


但是对于访问它的python代码,我不确定是否可以使用套接字或urllib,或者确切地说是什么?

对于远程访问Tika,基本上有两种方法可用。一个是,它提供了一个完整的RESTful接口。另一个是simple,它只在网络管道级别工作

对于生产使用,您可能需要使用Tika JAXRS服务器,因为它的功能更加全面。对于简单的测试和入门,服务器模式下的Tika应用程序应该可以

对于后者,只需连接到运行Tika应用程序的端口,将其流式传输到您的文档数据,然后将html读回即可。例如,在一个终端运行中

$ java -jar tika-app-1.3.jar --server --port 1234
然后,在另一个例子中,做

$ nc 127.0.0.1 1234 < test.pdf
$nc127.0.0.11234
然后您将看到测试PDF返回的html

在python中,您只需要一个简单的套接字调用,就像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
#/usr/bin/python
导入套接字,sys
#在哪里连接
主机='127.0.0.1'
端口=1234
如果len(系统argv)<2:
打印“必须提供文件名”
系统出口(1)
filename=sys.argv[1]
打印“将%s发送到端口%d上的Tika”%(文件名,端口)
#连接蒂卡
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 连接((主机、端口))
#打开要发送的文件
f=打开(文件名为“rb”)
#将文件流式传输到Tika
尽管如此:
chunk=f.read(65536)
如果不是块:
#EOF
打破
s、 sendall(块)
#告诉蒂卡我们已经把所有的东西都送来了
s、 关闭(插座关闭)
#得到回应
尽管如此:
chunk=s.recv(65536)
如果不是块:
#EOF
打破
打印块

您计划使用Tika应用程序服务器而不是功能更全面的服务器有什么原因吗?这基本上是我在系统上安装的,因为我无法轻松安装新东西。谢谢,您能告诉我如何在sockets中安装吗?我真的很感激。