拒绝某些URL

2024-04-26 11:44:33 发布

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

我目前正在大学机构知识库项目中使用Scrapy,在那里我需要获得每个大学的外部链接。有没有办法让我拒绝某些网址,如'谷歌网站'和'推特网站'. 下面是我目前的情况。我是新来的,所以任何帮助都将不胜感激。谢谢您!你知道吗

 import scrapy 

    class UtmSpider(scrapy.Spider):
        name = 'utm'
        start_urls = ['http://eprints.utm.my/id/eprint/']


        def start_requests(self):
            yield scrapy.Request('http://eprints.utm.my/id/eprint/', self.parse)

        def parse(self, response):
            for href in response.xpath('//a/@href').getall():
                yield scrapy.Request(response.urljoin(href), self.parse)

Tags: selfidhttpparse网站responsemydef
2条回答
ignore = ['google', 'twitter']
def parse(self, response):
    for href in response.xpath('//a/@href').getall():
        for kw in ignore:
            if kw not in href.lower():
                yield scrapy.Request(response.urljoin(href), self.parse)

按要求

编辑:

你问过如何排除某些包含文本的链接,比如你给出的例子,Google和Twitter。你知道吗

我没有改变你的代码做什么,只是添加了一个条件语句,它将检查href是否包含关键字。你知道吗

我们创建一个列表(排除术语的列表)。然后我们需要在每次检查链接时迭代该列表,因此关键字列表越短越好。你知道吗

如果关键字值不是href字符串的一部分,则传递并继续href link迭代。否则我们就放弃它。你知道吗

希望这有帮助

如果你的蜘蛛是简单的,那么解决方案从斯威夫特将工作得很好。 如果你的spider/spider中有很多代码,那么每次你想发出请求时检查url会污染你的代码。在这种情况下,您可以使用DownloaderMiddleware管道。 https://docs.scrapy.org/en/latest/topics/downloader-middleware.html 如果您搜索'IgnoreRequest',您将发现如何实现一个DownloaderMiddleware的描述,该软件将能够丢弃某些请求。你知道吗

相关问题 更多 >