首先是用pip3 install Scrapy, 我是用的mac系统直接安装就成功了没遇到过什么问题,安装好之后打开Pycharm建立项目,建立好了之后,点击terminal然后输入:scrapy startproject projectname如下图所示,我建立的是FirstProject ,
然后点击你所建立项目的文件,即可发现刚刚建立的包,如下图所示,我建立的项目是MySpider然后在其中建立FirstProject,下面分别介绍各个模块。
items.py:它定义了Item数据结构,所有的Item的定义都可以放在这里
pipelines.py:所有的Item pipline的实现都在这里
setting.py:它定义项目的全局配置
spider.py:包含每个Spider项目的实现,每个Spider都有一个文件
然后在命令行创建一个Spider,例如我要创建一个myspider这个Spider,命令为:scrapy genspider myspider itcast.cn,其中第一个参数为Spider名称,第二个参数为网站域名,所谓网站域名就是你要爬取哪个网站,执行完这个命令之后,你会发现spider里面多了一个模块名字为myspider,就是你建立的Spider名称,打开这个模块,代码如下
import scrap class MyspiderSpider(scrapy.Spider): name = 'myspider' allowed_domains = ['it cast.cn'] start_url = ['http://itcast.cn'] def parse(self,response): pass
这个Spider有三个属性,name,它是每个项目唯一的名字,allowed_domains它是爬取的域名,start_url它包括在启动时候的url列表,还包括一个parse方法,然后将item.py进行修改,
import scrapy class FirstprojectItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() name = scrapy.Field() title = scrapy.Field() info = scrapy.Filed()
然后解析,提取方式我们可以用css或者xpath,我们采用xpath
import scrapy from FirstProject.FirstProject.items import FirstprojectItem class MyspiderSpider(scrapy.Spider): name = 'myspider' allowed_domains = ['itcast.cn'] start_urls = ['http://itcast.cn/'] def parse(self, response): teacher_list = response.xpath('//div[@class = "li_txt"]') item = FirstprojectItem() for each in teacher_list: item['name'] = each.xpath('./h3/text()') item['title'] = each.xpath('./h4/text()') item['info'] = each.xpath('./p/text()')
return item
首先,实例化一个item将解析内容复制给item,然后采用xpath进行解析,最后在相应的目录下运行此命令 scrapy crawl myspider 其中myspider是我的模块名称,之后即可看到相应结果
如需保存运行结果可执行scrapy crawl myspider -o myspider.json此命令是保存所有内容
scrapy crawl myspider -o myspider.jsonlines此命令是每一个Item输出一行json
如果需要将数据存储到数据库,则需要是Item Pipeline ,item pipeline为项目管道,当item生产之后,item会被发送给itempipeline进行处理,item pipeline通常用来清洗html数据,查重,将结果保存到数据库等操作