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

2024-10-01 11:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 文件to应用程序httpdoc链接dethis
1条回答
网友
1楼 · 发布于 2024-10-01 11:27:47

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

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

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

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

然后,在另一个,做

^{pr2}$

然后您将看到测试PDF返回的html

在python中,您只需要一个简单的socket调用,就像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

相关问题 更多 >