【发布时间】: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 tspider 和scrapy crawl jspider,一切正常并生成csv 文件。
这是我如何运行程序的问题还是我的代码有问题?任何想法如何解决它?
【问题讨论】:
-
请看链接,可能有帮助stackoverflow.com/questions/15564844/…我在pycham终端scrapy list中做了这个comamnd | xargs -n 1 scrapy crawl -o tx.csv ,它的工作。