欢迎访问宙启技术站
智能推送

Scrapy中LinkExtractor()的参数配置详解

发布时间:2024-01-07 00:06:31

在Scrapy框架中,LinkExtractor()是一个用于提取页面中链接的类。它可以根据预先定义的规则从网页中提取出需要的链接,并将这些链接作为Scrapy的请求的一部分进行进一步的处理。下面我们将详细介绍LinkExtractor()的参数配置,并提供一个使用例子。

LinkExtractor()有以下几个常用的参数配置:

1. allow:该参数为一个正则表达式或者一个正则表达式的列表。它用于指定允许提取的链接的正则过滤条件。只有满足该正则条件的链接才会被提取出来。例如,设定allow=r'item'将提取所有包含'item'的链接。

2. deny:该参数为一个正则表达式或者一个正则表达式的列表。它用于指定不允许提取的链接的正则过滤条件。如果一个链接满足deny的正则条件,则不会被提取出来。例如,设定deny=r'login'将排除包含'login'的链接。

3. allow_domains:该参数为一个域名或一个域名的列表。它用于指定允许提取的链接的域名范围。只有属于指定域名的链接才会被提取出来。例如,设定allow_domains='example.com'将提取所有属于'example.com'域名下的链接。

4. deny_domains:该参数为一个域名或一个域名的列表。它用于指定不允许提取的链接的域名范围。如果一个链接的域名属于deny_domains的范围,则不会被提取出来。例如,设定deny_domains='example.com'将排除所有属于'example.com'域名下的链接。

5. restrict_xpaths:该参数为XPath表达式或XPath表达式的列表。它用于根据XPath表达式提取链接。只有满足XPath表达式的链接才会被提取出来。例如,设定restrict_xpaths='//div[@class="post"]'将提取所有位于class属性为'post'的div元素下的链接。

6. restrict_css:该参数为CSS选择器或CSS选择器的列表。它用于根据CSS选择器提取链接。只有满足CSS选择器的链接才会被提取出来。例如,设定restrict_css='.post'将提取所有class属性为'post'的元素下的链接。

下面是一个使用例子:

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

class MySpider(CrawlSpider):
    name = 'example'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com']

    rules = (
        Rule(LinkExtractor(allow=('item'), deny=('login')),
             callback='parse_item'),
    )

    def parse_item(self, response):
        # 提取链接后的处理逻辑
        pass

在上面的例子中,我们定义了一个名为MySpider的CrawlSpider类,它会从'http://www.example.com'开始爬取。在rules中,我们使用LinkExtractor()提取所有包含'item'的链接,并排除包含'login'的链接。然后,我们指定了处理这些链接的回调函数parse_item(),在回调函数中进行进一步的处理逻辑。

以上就是对于Scrapy中LinkExtractor()的参数配置的详细解释和一个使用例子的介绍。通过合理的配置LinkExtractor()的参数,我们可以灵活地提取出我们所需要的链接,并进行进一步的处理和抓取。