如何将一个漫游器用于不同的网站

时间:2019-04-10 22:47:57

标签: python scrapy

我要抓取2个不同的网站。其中一个是纯html,另一个是javascript(我需要飞溅才能将其刮擦)。 因此,我对此有几个疑问:

  1. 我可以仅使用一个机器人抓取两种不同类型的网站(使用HTML和JavaScript的一种)吗?我之前曾做过两个HTML网站,但它能正常工作,但我想知道如果其中之一是javascript,是否也能正常工作

  2. 如果第一个问题可行,我可以单独导出json吗?像url1 output1.json,url2 output2.json一样?

  3. 从我的代码中可以看到,需要编辑代码,而当需要删除两种不同类型的网站时,我不知道该怎么办。

  4. 是否有任何可以比较json的scrapy工具? (两个不同的网站几乎具有相同的内容。我想将output1.json用作基础,并检查output2.json中的某些值是否相同。

我的代码:

class MySpider(scrapy.Spider):

    name = 'mybot'
    allowed_domains = ['url1','url2']


    def start_requests(self):
        urls = (
            (self.parse1, 'url1'),
            (self.parse2, 'url2'),
        )
        for callbackfunc, url in urls:
            yield scrapy.Request(url, callback=callbackfunc)
            #In fact url2 must for javascript website so I need clearly splash here
    def parse1(self, response):
        pass

    def parse2(self,response):
        pass

1 个答案:

答案 0 :(得分:1)

是的,您可以使用同一蜘蛛抓取多个站点,但是如果它们差别太大,这是没有意义的。您已经弄清楚了这样做的方法:allowed_domainsstart_requests(或start_urls)。但是,导出到不同文件并不是一件容易的事。您将必须编写导出代码。

恕我直言,每个站点只有一只蜘蛛是解决之道。如果它们共享一些代码,则可以拥有一个BaseSpider类,蜘蛛可以从中继承该类。

关于您提到的javascript网站,您确定不能直接请求其API吗?