scrapy的简单使用

使用scrapy创建项目: scrapy startproject 项目名称
进入到项目里的spider文件,创建爬虫文件,scrapy genspider 爬虫名称 域名

项目文件分析:
spider文件里放爬虫文件,初始属性name为爬虫名称,allow_domains为允许爬取的域,parse类方法为默认解析数据的方法,会先从start_urls中发起请求,获取响应,解析后可用yield 方法返回解析结果或者调用回调方法重新发起请求 而不能用return方法,items.py创建类来接受字段, middlewares.py里通过构建中间件来修改request和response携带的请求数据,pipelines.py文件里定义管道文件,进行数据过滤,settings.py里有各种配置,如 是否遵守rebot协议,全局的请求头,启用中间键和加载自定义中间件
爬虫文件中回调方法scrapy.Request中可也设置dont_filter表示是否会对已经发起过得请求再次发起请求,默认为false表示不过滤,去重
通用爬虫的爬虫文件创建方法为 scrapy genspider -t crawl 爬虫名称 域名
通用爬虫使用rules属性来决定爬虫的爬取规则,并将匹配后的url请求提交给引擎,完成后续的爬取工作。
rules规则属性的参数:是一个元组,可以放多个Rule对象

创建Rule:
LinkExtract:设置提取规则
allow:里面跟正则,符合正则就提取
deny:里面跟正则,符合正则就不提取
allow_domea:表示会提取的域
deny_domea:表示不会提取的域
restrict_xpath:指定xpath匹配到的区域进行提取url
restrict_css:指定css匹配到的区域进行提取url

callback:设置回调函数
follow:是否跟进
process_links:设置一个函数,根据正则规则获取的url,可以在回调函数中获取
process_request:设置一个函数,可以在这个回调方法中拦截所有根据正则规则获取到的url构建的request对象

通用爬虫使用时注意:
1.设置回调的时候一定不能重写parse方法
2.要获取起始url的响应结果,必须重写 parse_start_url
3.在设置Rule对象的时候,如果没有callback回调函数,默认表示跟进

什么情况下会使用通用爬虫
提取的目标网站的网址很有规律,并且各个模块很清晰

scrapy的request和response一般通过自定义中间件来添加请求头,设置用户代理,添加请求头来反反爬虫

你可能感兴趣的:(scrapy的简单使用)