如何以编程方式运行scrapy spider就像一个简单的脚本?

时间:2017-12-13 12:32:37

标签: python web-scraping scrapy

我创建了一个Scrapy蜘蛛。但我想把它作为一个脚本运行。我怎么能这样做 现在我可以在终端中运行此命令:

$ scrapy crawl book -o book.json

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

enter image description here

3 个答案:

答案 0 :(得分:5)

您可以直接在python脚本中运行spider而无需使用项目。

您必须使用scrapy.crawler.CrawlerProcessscrapy.crawler.CrawlerRunner
但我不确定它是否具有projekt中的所有功能。

详见文档:Common Practices

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

BTW:在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 :(得分:1)

python中的OS模块提供了与操作系统进行交互的功能。

在这里可能有用:

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

答案 2 :(得分:-1)

shell脚本可以吗?如:

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