2

我在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")

该函数返回一个二进制字符串,它是指定资源的内容。

4

1 回答 1

0

这行代码:

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 pkgutilinputoutput文档页面了解更多详细信息。

于 2018-09-20T07:45:11.197 回答