【问题标题】:scrapinghub upload and use filescrapinghub上传和使用文件
【发布时间】:2019-02-24 08:53:00
【问题描述】:

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

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

【问题讨论】:

    标签: python-3.x scrapy scrapinghub


    【解决方案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 文档页面了解更多详情。

    【讨论】:

    • 非常感谢,这正是我需要的!我稍微修改了代码,因为它并没有像我需要的那样工作 data = pkgutil.get_data("youtube_crawl", "resources/Names.txt") data = data.decode("UTF-8" ) 数据 = data.split('\r\n')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2013-01-01
    • 2013-10-09
    • 2015-10-28
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多