link_extractor是一个Link Extractor对象,用于定义需要提取的链接
callback从link_extractor中每获取到链接得到Responses时,会调用参数所指定的值作为回调函数,该回调函数接收一个response作为其一个参数
follow是一个布尔(boolean)值,指定了根据该规则从response提取的链接是否需要跟进(这里的跟进是指是否除了当前页面继续爬取)
process_links指定spider中哪个的函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤
process_request指定处理函数,根据该Rule提取到的每个Request时,该函数将会被调用,可以对Request进行处理,该函数必须返回Request或者None
LinkExtractors 是用来提取链接,这是一个正则表达式根据正则表达式进行匹配,如果为空则会匹配所有的链接
allowed_domains = ['××××××']这里写到的是允许爬取的域
start_urls = ['×××××××××××××××××××××']这里写的是爬取的起始的url
callback是设置回调函数解析数据用的
follow设置的是否跟进
settings设置
ROBOTSTXT_OBEY = False 设置为false表示不遵守robot规则,如果设置为true则表示遵守robot
DOWNLOAD_DELAY = 3表示设置下载延迟
设置全局的Header:DEFAULT_REQUEST_HEADERS = {
'××××××××××××××××××××××××××××××××××××××××××××',
}这里设置的是全局的UA
ITEM_PIPELINES = {
'×××××××××××××××××××××××××××××××××,
}这里是激活pipelines数据处理管道
第二个方式:
编写main.py文件执行
以下举个栗子
import os,sys
from scrapy.cmdline import execute
sys.path.append(o由于CrawlSpider使用parse方法来实现其逻辑,如果覆盖了 parse方法,crawl spider将会运行失败s.path.dirname(os.path.abspath(file)))
execute(['scrapy','crawl','xcfcrawlspider'])
提取匹配的链接
page_lx = LinkExtractor(allow = ('匹配规则'))
rules = [
提取匹配,并使用spider的parse方法进行分析;并跟进链接没有callback意味着follow默认为True
Rule(page_lx, callback = 'parse', follow = True)
]
记住 callback 千万不能写 parse,由于CrawlSpider使用parse方法来实现其逻辑,如果覆盖了 parse方法,crawl spider将会运行失败