загрузка и использование файла scrapinghub

Я загрузил своего паука на scrapyhub. Я понимаю, как загружать с моим *.txt файлом, но как мне его использовать?

Мой файл setup.py выглядит так:

setup(
    name         = 'project',
    version      = '1.0',
    packages     = find_packages(),
    package_data={
        'youtube_crawl': ['resources/Names.txt']
    },
    entry_points = {'scrapy': ['settings = youtube_crawl.settings']},
)

Затем я хочу использовать этот Name.txt.

перед загрузкой мой паук выглядит так

def parse(self, response):
        with open('resources/Names.txt','rt') as f:
            for link in f:
                url = "https://www.youtube.com/results?search_query={}".format(link)
                name = link.replace('+',' ')
                yield Request(url, meta={'name':name}, callback=self.parse_page, dont_filter=True)

Итак, мой вопрос: как я могу использовать свой файл в хабе для очистки?

Я попробовал этот код, но не понимаю, как он работает и как интегрировать его с моим кодом =)

data = pkgutil.get_data("youtube_crawl", "resources/Names.txt")

Функция возвращает двоичную строку, являющуюся содержимым указанного ресурса.


person олег колесник    schedule 20.09.2018    source источник


Ответы (1)


Эта строка кода:

data = pkgutil.get_data("youtube_crawl", "resources/Names.txt")

эквивалентен этому блоку:

with open('resources/Names.txt') as f:
    data = f.read()
f.closed

Итак, теперь вы можете прочитать двоичную строку построчно:

def parse(self, response):
    data = pkgutil.get_data("youtube_crawl", "resources/Names.txt")

    for link in data.split('\n'):
        url = "https://www.youtube.com/results?search_query={}".format(link)
        name = link.replace('+',' ')
        yield Request(url,
                      meta={'name':name},
                      callback=self.parse_page,
                      dont_filter=True)

Взгляните на Python 3 pkgutil или inputoutput для получения более подробной информации.

person Nando Quintana    schedule 20.09.2018
comment
Большое спасибо, это то, что мне нужно! Я немного изменил код, потому что он работал не так, как мне нужно data = pkgutil.get_data(youtube_crawl, resources/Names.txt) data = data.decode(UTF-8) data = data.split ('\г\п') - person олег колесник; 20.09.2018