如何以编程方式运行Scrapy爬虫,就像运行简单脚本一样?

10

我创建了一个Scrapy爬虫,但我想将其作为脚本运行。我该如何做? 现在我可以通过终端命令来运行:

$ scrapy crawl book -o book.json

但我想像简单的Python脚本一样运行它

enter image description here


我想要像运行简单脚本一样运行它,而不是使用"scrapy crawl book -o book.json"这样的命令。 - Ravi Siswaliya
3个回答

15

您可以在Python脚本中直接运行爬虫,而不需要使用项目。

您必须使用scrapy.crawler.CrawlerProcessscrapy.crawler.CrawlerRunner,但我不确定它是否具有与项目中相同的所有功能。

更多信息请参见文档:常见实践

或者您可以将命令放在Linux中的bash脚本或Windows的.bat文件中。

顺便说一下,在Linux上,您可以在第一行添加shebang(#!/bin/bash)并设置属性“executable”-即chmod +x your_script -它将像普通程序一样运行。


工作示例

#!/usr/bin/env python3

import scrapy

class MySpider(scrapy.Spider):

    name = 'myspider'

    allowed_domains = ['http://quotes.toqoute.com']

    #start_urls = []

    #def start_requests(self):
    #    for tag in self.tags:
    #        for page in range(self.pages):
    #            url = self.url_template.format(tag, page)
    #            yield scrapy.Request(url)

    def parse(self, response):
        print('url:', response.url)

# --- it runs without project and saves in `output.csv` ---

from scrapy.crawler import CrawlerProcess

c = CrawlerProcess({
    'USER_AGENT': 'Mozilla/5.0',
    'FEED_FORMAT': 'csv',
    'FEED_URI': 'output.csv',
})
c.crawl(MySpider)
c.start()

-1

Python中的OS模块提供了与操作系统交互的函数。

它在这里可能会有用:

import os
os.system('scrapy crawl book -o book.json')


如果你正在使用Selenium运行爬虫,那么这是一个不好的想法。 - Surya Bhusal

-2

一个 shell 脚本可以吗?例如:

#!/usr/bin/bash
scrapy crawl book -o book.json

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接