Scrapy框架中的CrawlSpider是一种高级爬虫,它提供了一种更方便的方式来编写爬虫,特别适用于处理需要跟踪链接的网站。
使用CrawlSpider,你需要创建一个新的spider类,继承自CrawlSpider,并定义一些规则来指定如何跟踪链接和提取数据。下面是一个简单示例:
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'myspider'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com']
rules = (
Rule(LinkExtractor(allow=(r'category\.php',)), callback='parse_category'),
Rule(LinkExtractor(allow=(r'item\.php',)), callback='parse_item'),
)
def parse_category(self, response):
# 处理分类页面的响应
def parse_item(self, response):
# 处理商品页面的响应
在上面的示例中,allowed_domains
用于指定允许爬取的域名,start_urls
用于指定起始URL。
rules
是一个元组,其中包含一系列规则,每个规则都包含一个LinkExtractor对象和一个回调函数。LinkExtractor对象用于指定要跟踪的链接的匹配规则,可以使用正则表达式。回调函数用于处理每个匹配到的链接的响应。
在上面的示例中,第一个规则将匹配所有包含"category.php"的链接,并将其响应传递给parse_category
方法进行处理。第二个规则将匹配所有包含"item.php"的链接,并将其响应传递给parse_item
方法进行处理。
以上就是使用CrawlSpider的基本用法。你可以根据需要定义更多的规则和回调函数来处理不同类型的链接和数据。