Я использовал модуль "nutch- python .py", который упаковывает вызовы Nutch в код python, чтобы выполнить несколько обходов в Интернете, а затем индексировать файлы в Solr. Проблема возникла при попытке индексировать файлы на собственно Solr (из-за моей конфигурации, которая, тем не менее, не имеет отношения к объему вопроса): команды Crawl позволяют мне собирать необработанные данные с заданного веб-сайта, которые я затем возвращаю к их исходные файлы с помощью команды bin\nutch dump -flatdir
от Cygwin (в настоящее время я использую Windows установку). Теперь проблема с Nutch- python .py заключается в том, что он, похоже, либо пропускает некоторые команды, либо не передает их должным образом на базовый Nutch-сервер (который я снова создал из Cygwin, используя bin/nutch startserver >& serverlog.txt
), как я уже протестировали с помощью команды index
, которая должна была быть введена грубой силой на сервер. Однако та же процедура не работает с dump
, поэтому я спрашиваю следующее:
Как создать экземпляр Nutch JobClient из Python, чтобы не только dump
сканируемые файлы из Интернета, но также для передачи некоторых аргументов (а именно bin/nutch dump -segment test/segments -outputDir outputDir -flatdir -mimetype audio/mpeg
)?
Вот мой python код:
from nutch.nutch import Nutch
from nutch.nutch import SeedClient
from nutch.nutch import Server
from nutch.nutch import JobClient
import nutch
def nutchCrawl(var_seed):
print(var_seed)
#ip and port where the nutch server is initialized
sv=Server('http://localhost:8081')
#seed for the session
sc=SeedClient(sv)
#url passed by the user, while only one is taken as input
#the api forces at least two of them to proceed, so second one
#is just an empty folder
seed_urls=(var_seed,
'')
sd= sc.create('music-seed',seed_urls)
#nt = Nutch(confID=r"C:\nutch\runtime\local\conf\nutch-site.xml")
#nutch configuration ID, stays consistent within session
nt = Nutch(confID='nutchid')
#JobClient's confID also doubles as folder where the data is going to be saved to
jc = JobClient(sv, 'test', 'default')
#rounds are preset to directory and first subdirectory
#future versions may allow changes to number of rounds
cc = nt.Crawl(sd, sc, jc, rounds=2)
while True:
job = cc.progress()
# gets the current job if no progress, else iterates and makes progress
if job == None:
break
#indexing step, illegal files are deleted at a later stage
#this command is NOT present in nutch-python, despite what the wiki says
jc.create(command='index')
#dumping the raw data into files
#this part throws an error, even without adding the extra arguments
jc.create(command='dump -segment test/segments -outputDir outputDir -flatdir -mimetype audio/mpeg')