scrapy从脚本运行蜘蛛

Mar*_*oli 13 python scrapy python-2.7

我想从脚本而不是脚本中运行我的蜘蛛 scrap crawl

我找到了这个页面

http://doc.scrapy.org/en/latest/topics/practices.html

但实际上并没有说该放哪个脚本.

有什么帮助吗?

Alm*_*hen 27

它简单明了:)

只需查看官方文档即可.我会在那里进行一些改动,这样你就可以控制蜘蛛只在你做的时候运行python myscript.py而不是每次只是从它进口.只需添加一个if __name__ == "__main__":

import scrapy
from scrapy.crawler import CrawlerProcess

class MySpider(scrapy.Spider):
    # Your spider definition
    pass

if __name__ == "__main__":
    process = CrawlerProcess({
        'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
    })

    process.crawl(MySpider)
    process.start() # the script will block here until the crawling is finished
Run Code Online (Sandbox Code Playgroud)

现在保存文件myscript.py并运行'python myscript.py`.

请享用!


Ami*_*ini 6

你为什么不这样做呢?

from scrapy import cmdline

cmdline.execute("scrapy crawl myspider".split())
Run Code Online (Sandbox Code Playgroud)

将该脚本放在您放置的同一路径中scrapy.cfg


Guy*_*ely 5

幸运的是scrapy源是开放的,所以你可以按照crawl命令的方式工作,并在你的代码中执行相同的操作:

...
crawler = self.crawler_process.create_crawler()
spider = crawler.spiders.create(spname, **opts.spargs)
crawler.crawl(spider)
self.crawler_process.start()
Run Code Online (Sandbox Code Playgroud)

  • 什么是`**opts.spargs`? (2认同)