Scrapy 学习篇(六)--crawlspider

本文介绍如何使用Scrapy的CrawlSpider进行网站爬取,包括配置项目的启动、定义爬虫规则、提取链接及处理响应等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

crawlspider的使用

  1. scrapy startproject 项目名
  2. scrapy genspider -t crawl 爬虫名 allow_domain
  3. 指定start_url,对应的响应会通过rules提取url地址
  4. 完善rules,添加Rule

注意点:

  • url地址不完整,crawlspider会自带补全后请求
  • parse函数不能定义,它有特殊功能,用于url的提取
  • callback:连接提取器提取出来的url地址对应的响应交给他处理
  • follow:连接提取器提取处理的url地址对应的响应是否继续被rules过滤
# -*- coding:utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider,Rule

class CfSpider(CrawlSpider):
    name = 'cf'
    allowed_domains=['circ.gov.cn']
    start_urls = ['http://circ.gov.cn/']

    #定义提取url地址规则
    rules = (
        #LinkExtractor 连接提取器,提取url地址
        #callback 提取出来的url地址的response会交给callback处理
        #follow 当前url地址的响应是否重新通过rules来提取url地址
        Rule(LinkExtractor(allow=r'Itmes/',callback='parse_item',follow=True),
        Rule(LinkExtractor(allow=r'Itmes/',callback='parse_item',follow=True)
)

#parse函数有特殊功能,不能定义
def parse_item(self,response):
    i={}
    return i

LinkExtractor更多参数

  • allow:满足括号中正则表达式的url会被提取,如果为空,则全部匹配
  • deny:满足括号中正则表达式的url一定不会被提取(优先级高于allow)
  • allow_domains:会被提取的链接的domains
  • deny_domains:一定不会被提取链接的domains
  • restrict_xpaths:使用xpath正则表达式,和allow共同作用过滤链接,即xpath满足范围内的url地址会被提取

Spiders.Rule常见参数

  • link_extractor:是一个Link Extractor对象,用于定义需要提取的链接
  • callback:从link_extractor中每获取到链接时,参数所指定的值作为回调函数
  • follow:是否跟进从response中提取的符合规则的链接
  • process_links:指定该spider中哪个函数会被调用,从link_extractor中获取到链接列表时会调用该函数,该方法主要用来过滤url
  • process_request:指定该spider中哪个函数会被调用,该规则提取到每个requests时都会调用该函数,用来过滤request
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值