Scrapy如何爬取多个不同页面?

初用scrapy,不清楚scrapy是如何爬取多个不同网页的?
比如我要爬取两个前缀

idLists = range(0,xx)
prefix = ["http://a.aa.com/a/", "http://b.aa.com/b/"]

每次将id放在前缀后面
那么问题来了,第一个前缀的网页我要爬取的内容为a,第二个前缀的网页我要爬取的内容为b。这个时候应该写两个items和两个spider吗?还是一个就能解决了?

现在暂时有两种思路:
第一种,写两个item和spider,然后合并,但是我不知道怎么合并item

class item1():
    a = Field()
    
class item2():
    b = Filed()
    
class spider1():
    ...
    yield item1
    
class spider2():
    ...
    yield item2

第二种,写一个回调函数?

class Item():
    a = Field()
    b = Field()
def start_requests():
    return Requests("http://a.aa.com/a/", callback=self.page2)
def page2():
    Requests("http://b.aa.com/b/")
    yeild item

不知道scrapy怎么写,到底怎么访问两个不同的页面,获取不同的东西,然后再合并起来呢?感觉item和spider是一对一的关系?

阅读 11.2k
2 个回答

如果a,b是独立的,就分两个spider,一个spider是可以用多个item的,如果有需要的话。

如果是两个独立的目标网站,分开写会比较灵活一点。
如果是同一个网站,假定你分别有两个item:itema, itemb, 有很多url要爬取,这些url能在两个item的解析都获取到,你获取了url后就yield新的请求就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题