CrawlSpiders总结

它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更合适

通过下面的命令可以快速创建CrawlSpiders模板的代码:

scrapy genspider -t crawl 爬虫文件 域名

CrawlSpider继承于Spider类,除了继承过来的属性外(name, allow_domains),还提供了新的属性和方法:LinkExtractors
Link Extractors的目的很简单:提取链接
每个LinkExtractor有唯一的公共方法时extract_links(),它接收一个Response对象,并返回一个scrapy.link.Link对象。

主要参数:

  • allow:满足括号中“正则表达式”的URL会被提取,如果为空,则全部匹配。

  • deny:满足括号中“正则表达式”的URL一定不提取(优先级高于allow)。

  • allow_domains:会提取的链接的domains。

  • deny_domains:一定不会被提取链接的domains。

  • restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。

rules

CrawlSpider使用rules属性来决定爬虫的爬取规则,并将匹配后的url请求提交给引擎,完成后续的爬取工作。

在rules中包含一个或多个Rule对象,每个Rule对爬取网站的动作定义了某种特定操作,比如提取当前相应内容里的特定链接,是否对提取的链接跟进爬取,对提交的请求设置回调函数等。

注意:如果多个rule匹配了相同的链接,则根据规则在本集合中被定义的顺序,第一个会被使用。

  • link_extractor:是一个Link Extractor对象,用于定义需要提取的链接。

  • callback: 从link_extractor中每获取到链接得到Responses时,会调用参数所指定的值作为回调函数,该回调函数接收一个response作为其一个参数。

  • follow:是一个布尔(boolean)值,指定了根据该规则从response提取的链接是否需要跟进。如果callback为None,follow 默认设置为True ,否则默认为False。

  • process_links:指定spider中哪个的函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。

  • process_request:指定处理函数,根据该Rule提取到的每个Request时,该函数将会被调用,可以对Request进行处理,该函数必须返回Request或者None

爬取规则(Crawling rules)
1.可以先创建一个虚拟环境
2.进入指定目录,创建爬虫项目
第一步:根据要爬取的网页确定需要保存的字段
Item.py:定义需要爬取的字段

第二步:编写爬虫类,LinkExtractor实例对象
根据需要提取的页面的url来设置需要提取的规则

第三步:数据保存,pipelines管道文件

第四步:settings相关设置,settings.py设置文件

  • 1.ROBOTSTXT_OBEY = False 设置是否遵守robot协议
  • 2.DOWNLOAD_DELAY = 3 设置下载延时
  • 3.设置全局的Header
    DEFAULT_REQUEST_HEADERS = {
    'User-Agent':' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:59.0) Gecko/20100101 Firefox/59.0',
    }
  • 4.激活pipelines数据处理管道

ITEM_PIPELINES = {
'xiachufang.pipelines.XiachufangPipeline': 300,
}

关于数据库的相关配置
MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
MYSQL_USER = ''
MYSQL_PWD = ''
MYSQL_DB = ''
CHARSET = 'utf8'

第五步:运行程序

你可能感兴趣的:(CrawlSpiders总结)