繁体   English   中英

无法读取文件,然后将结果写入scrapy(python)

[英]Can't read in a file and then write results to a file with scrapy (python)

我正在抓取某些内容,但遇到了问题。 我发现可以使用以下命令行将我的抓取结果保存到csv文件中:

    scrapy crawl spider --set FEED_URI=output.csv --set FEED_FORMAT=csv

我也知道,我可以使用以下命令行输入来读取起始网址以从文本文件中抓取:

    scrapy crawl dmoz -a filename=text.txt

我在蜘蛛中的代码是:

class DmozSpider(BaseSpider):
name = "dmoz"
allowed_domains = ["ebay.com"]

def __init__(self, filename=None):
    if filename:
        with open(filename, 'r') as f:
            self.start_urls = f.readlines()
            print self.start_urls

当我尝试同时执行这两项操作时,就会出现我的问题。 我希望我的蜘蛛抓取文本文件中指定的url,然后将输出写入csv文件。 以下命令行由于某种原因而无法正常工作,已读入URL(我知道这是事实),但未写入csv文件:

   scrapy crawl dmoz -a filename=text.txt --set FEED_URI=output.csv --set FEED_FORMAT=csv

如果有人看到我在做什么错或有解决方法,将不胜感激。 谢谢!

如果您有动态启动请求,则应使用start_requests()产生请求,而不是更改start_urls
这是您应该如何做:

class DmozSpider(BaseSpider):
name = "dmoz"
allowed_domains = ["ebay.com"]

def start_requests(self):
    if self.filename:
        with open(self.filename, 'r') as f:
            for url in f.readlines():
                yield scrapy.Request(url)

要将输出写入csv文件,只需使用-o参数定义文件(如果使用有效的扩展名,则将自动选择Feed格式):

scrapy crawl dmoz -a filename=text.txt -o output.csv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM