Python中LinkExtractor()库的功能及使用示例
LinkExtractor是Scrapy中的一个链接提取器,它用于从HTML或XML源码中提取链接。LinkExtractor提供了多种方法用于过滤和提取链接,使得链接提取变得更加灵活和高效。
LinkExtractor的常用参数包括:
1. allow:允许的正则表达式或正则表达式列表,链接必须匹配其中之一才会被提取。
2. deny:拒绝的正则表达式或正则表达式列表,链接必须不匹配其中之一才会被提取。
3. allow_domains:允许的域名,链接的域名必须包含其中一个才会被提取。
4. deny_domains:拒绝的域名,链接的域名必须不包含其中一个才会被提取。
5. restrict_xpaths:提取链接的XPath表达式,链接必须匹配其中之一的XPath才会被提取。
6. restrict_css:提取链接的CSS选择器表达式,链接必须匹配其中之一的CSS选择器才会被提取。
7. restrict_text:提取链接的文本,链接必须包含该文本才会被提取。
以下是一个使用LinkExtractor提取链接的示例代码:
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=r'\/category\/'), callback='parse_category'),
Rule(LinkExtractor(allow=r'\/product\/'), callback='parse_product'),
)
def parse_category(self, response):
# 处理分类页面的逻辑
def parse_product(self, response):
# 处理产品页面的逻辑
在上面的示例代码中,首先导入了LinkExtractor和CrawlSpider类,然后创建了一个继承自CrawlSpider的自定义Spider类MySpider。
在MySpider中,设置了name属性为'example',allowed_domains属性为['example.com'],start_urls属性为要爬取的起始URL列表。
接下来定义了rules属性,其中规定了两个Rule,每个Rule对应一个LinkExtractor和一个回调函数。
个Rule中的LinkExtractor使用了allow参数,正则表达式为r'\/category\/',表示只提取URL中包含'/category/'的链接,将其传递给parse_category回调函数进行处理。
第二个Rule中的LinkExtractor使用了allow参数,正则表达式为r'\/product\/',表示只提取URL中包含'/product/'的链接,将其传递给parse_product回调函数进行处理。
parse_category和parse_product是自定义的回调函数,用于处理不同类型的页面。
通过这样的设置,LinkExtractor会根据规则从起始URL开始提取满足条件的链接,然后将其传递给相应的回调函数进行处理。这样就实现了简单的链接提取功能。
总结来说,LinkExtractor是Scrapy中用于提取链接的库,它提供了多种方法用于过滤和提取链接,方便高效地处理链接。使用LinkExtractor可以简化链接提取的代码,并且提供了更多的过滤选项以适应不同的需求。
