Выполнение команды «dump» для Apache Nutch из Python (с использованием nutch- python .py) - PullRequest
0 голосов
/ 25 апреля 2020

Я использовал модуль "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')
...