我要抓取2个不同的网站。其中一个是纯html,另一个是javascript(我需要飞溅才能将其刮擦)。 因此,我对此有几个疑问:
我可以仅使用一个机器人抓取两种不同类型的网站(使用HTML和JavaScript的一种)吗?我之前曾做过两个HTML网站,但它能正常工作,但我想知道如果其中之一是javascript,是否也能正常工作
如果第一个问题可行,我可以单独导出json吗?像url1 output1.json,url2 output2.json一样?
从我的代码中可以看到,需要编辑代码,而当需要删除两种不同类型的网站时,我不知道该怎么办。
是否有任何可以比较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
答案 0 :(得分:1)
是的,您可以使用同一蜘蛛抓取多个站点,但是如果它们差别太大,这是没有意义的。您已经弄清楚了这样做的方法:allowed_domains
和start_requests
(或start_urls
)。但是,导出到不同文件并不是一件容易的事。您将必须编写导出代码。
恕我直言,每个站点只有一只蜘蛛是解决之道。如果它们共享一些代码,则可以拥有一个BaseSpider
类,蜘蛛可以从中继承该类。
关于您提到的javascript网站,您确定不能直接请求其API吗?