【问题标题】:Only getting one result when running two spiders sequentially with scrapy用scrapy顺序运行两个蜘蛛时只得到一个结果
【发布时间】:2020-07-08 10:07:04
【问题描述】:

我的 spider.py 类中有两个蜘蛛,我想运行它们并生成一个 csv 文件。 下面是我的spider.py的结构

class tmallSpider(scrapy.Spider):
    name = 'tspider'
    ...
class jdSpider(scrapy.Spider):
    name = 'jspider'
    ...

configure_logging()
runner = CrawlerRunner()
@defer.inlineCallbacks
def crawl():
    yield runner.crawl(tmallSpider)
    yield runner.crawl(jdSpider)
    reactor.stop()
crawl()
reactor.run()

下面是我的 items.py 的结构

class TmallspiderItem(scrapy.Item):
    # define the fields for your item here like:

    product_name_tmall = scrapy.Field()
    product_price_tmall = scrapy.Field()

class JdspiderItem(scrapy.Item):
    product_name_jd = scrapy.Field()
    product_price_jd = scrapy.Field()

我想生成一个四列的csv文件:

product_name_tmall | product_price_tmall | product_name_jd | product_price_jd

我在 pycharm 的终端中执行了scrapy crawl -o prices.csv,但没有生成任何内容。

我向上滚动发现只有jd items 打印在终端中,我没有看到任何tmall items 打印。

但是,如果我为天猫蜘蛛添加open_in_browser 命令,浏览器会打开。我猜代码被执行了,但不知何故没有记录数据?

如果我分别运行scrapy crawl tspiderscrapy crawl jspider,一切正常并生成csv 文件。 这是我如何运行程序的问题还是我的代码有问题?任何想法如何解决它?

【问题讨论】:

标签: python scrapy


【解决方案1】:

我认为你启动蜘蛛运行的方式出错了。

您可以简单地使用 CrawlerProcess 来启动作业。 你可以看看这个页面https://docs.scrapy.org/en/latest/topics/practices.html了解CrawlerProcess的使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2015-09-07
    • 2021-08-21
    • 1970-01-01
    • 2020-08-12
    相关资源
    最近更新 更多