1.scrapy startproject projectname(项目名称)
进入到spiders文件夹下创建爬虫文件
2.scrapy genspider 爬虫文件名称 网站的域
3.使用pycharm打开项目,设置虚拟环境
进入爬虫py文件zzw.py
爬虫文件继承scrapy.Spider
先要指定爬虫文件的名称(唯一)
allowed_domains:设置允许爬取的域 (可以指定多个)
start_urls:设置起始的url (可以指定多个)
根据起始url构建请求,从引擎队列里拿到请求,最终经过下载中间件进行请求的发起,然后拿到响应给爬虫文件后调用回调方法parse
parse里接收响应结果,解析数据,提取新的url
使用response.xpath可以直接根据xpath语法提取目标数据
使用yield将item数据交给管道
进入items里
items里定义要爬取的字段
pipelines.py 管道 ,在管道里面做数据的过滤和数据的持久化
将数据存到本地
注意:在使用管道之前,要先激活管道,需要在setings 文件中激活
setting.py 设置文件
将注释掉的代码打开,在这里进行管道的激活,前面表示路径,后面跟的数字,数字越小表示优先级越高,越先经过哪个类
ITEM_PIPELINES = { 'chinaz.pipelines.ChinazPipeline': 300,}
回到 pipelines.py 管道文件中
定义 open_spider 方法,是一个可选的方法,有需要的时候就去调用,当spider 方法开启的时候,会执行,并且只调用一次,表示 爬虫开始
定义 close_spider方法, 和open_spider 方法一样,只调用一次,表示,爬虫结束
mongodb 数据持久化 将数据存入到 mongodb 数据库中
return item 的作用:
在初始化中创建数据库连接 例如:self.client = pymongo.MongoClient(host,port)
获取数据库 例如: self.db = self.client[db]
@classmethod 是一个类方法,crawler:可以从crawler里面获取到爬虫的核心组件(从settings.py设置文件中获取相关参数)
def from_crawler(cls, crawler):
例如:host = crawler.settings['MONGO_HOST']
port = crawler.settings['MONGO_PORT']
return cls(host,port)
在 setting.py 设置文件中 写入mongodb数据库相关配置如下代码
MONGO_HOST = '127.0.0.1'
MONGO_PORT = 27017
MONGO_DB = 'chinaz-99'
在 item.py 定义方法 例如: def get_collection_name(self): return 'categroy'
回到 pipelines.py 管道文件中
col_name = self.db[item.get_collection_name()]
col_name.insert(dict(item))
定义 close_spider()方法 爬虫结束的时候会调用 self.client.close()
mysql 数据库持久化,将数据存放在mysql 数据库中
在 piplines.py 管道文件中做mysql 的数据持久化
创建一个数据库连接 self.client = pymysql.Connect(host,user,pwd,db,charset=charset)
创建游标 self.cursor = self.client.cursor()
在setting.py 设置文件中 写入mysql 数据库相关配置