刮10个链接在刮,然后停止爬行的领域和开始与另一个

2024-04-26 17:58:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是刮痧。我已经给出了一个域名列表。它现在实际做的是刮取整个域,搜索pdf链接并将其存储在数据库中。这个过程是异步的。 我想得到10个pdf链接从每个域和停止爬虫。在

如何做到这一点?在


Tags: 数据库列表pdf链接过程爬虫域名
1条回答
网友
1楼 · 发布于 2024-04-26 17:58:26

scrapy是关于并行性的,可以做些类似的事情:

class MySpider(BaseSpider):
    allowed_domains = ['domain1.com', 'domain2.com', ... 'domain10.com']
    start_urls = ['http://domain1.com/index.html', 
                  'http://domain2.com/a.html', 
                  ...,
                  'http://domain10.com/b.html']
    ...

    def __init__(self, *a, **kw):
        super(MySpider, self).__init__(*a, **kw)
        self.domain_counters = collections.defaultdict(set)

    def parse(self, response):
        ....
        for link in sel.xpath("//a[contains(@href, '.pdf')"):
            # extract domain, 
            # note that url can be relative and take it from response
            domain = urlparse(...)
            # keep generating Requests as long as len(self.domain_counters[domain]) < 10
            self.domain_counters[domain].add(link)
            if len(self.domain_counters[domain]) < 10
                yield Request(url=link, callback=self.download_pdf)

请注意,并行地聚集几个域可能会减慢每个域的点击节奏,因此更礼貌一些

相关问题 更多 >