CrawlSpider 怎么针对多个爬取站点设置 rules 或者 Rule ???

2019-04-22 14:31:18 +08:00
 Northxw

  如题,先放一段代码:

    start_urls = ['https://bj.58.com/ershouche/',
                  'https://www.guazi.com/bj/buy/']

    rules = (
        # Rule(LinkExtractor(restrict_css='div.main_list.clearfix > div.info_list > ul > li > div.col.col2 > a'), callback='parse_item'),
        # Rule(LinkExtractor(restrict_css="a[class='next']"))
        Rule(LinkExtractor(restrict_xpaths='div.list-wrap.js-post > ul > li > a'),
             # process_request='parse_guazi_request',
             callback='parse_guazi'),
    )


我的需求:根据 start_urls 先抓取 58 同城二手车信息,然后执行相应的 rules 或 Rule ;然后,抓取瓜子二手车信息,再执行相应的 rules 或者 Rule。

目前的困难:不知都该怎么针对不同的抓取链接写 rules 或 Rule, 尝试过写在一个里面,行不通。所以前来拜求解决方案。先谢谢大家。

1833 次点击
所在节点    程序员
5 条回复
dsg001
2019-04-22 18:26:46 +08:00
分成两个爬虫呗,58 的爬虫直接入库,瓜子的爬虫从数据库中获取信息
Northxw
2019-04-22 18:55:26 +08:00
@dsg001 但是我想要在一个 spider 里面完成,毕竟是 crawlspider, 如果不能达到通用化,做着就没意思嘞
snappyone
2019-04-22 19:16:19 +08:00
写一个带通用方法的爬虫,然后根据配置生成不同实例
dsg001
2019-04-22 19:49:08 +08:00
@Northxw CrawlSpider 改的太多,还不如用 Spider 控制流程
Northxw
2019-04-22 19:58:43 +08:00
@snappyone 我的思路就是通用爬虫。哈哈。

@dsg001 不不不,我只做到半通用化,好理解化就可以啦。全部配置我也不喜欢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/557512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX