安装scrapy
pip installl scrapy
项目的一般开发流程:
创建项目-->创建爬虫-->提取数据-->保存数据
1.创建项目,需要在创建命令建立文件,之后代码在这个文件下进行操作。
创建scrapy项目命令:
scrayp startproject<项目名称>
其中每个文件有一定的作用,一些文件一般,这时我们需要明白哪些文件我们不需要修改,哪些文件我们必须写,哪些文件可以选择修改(一般不需要修改)。
2.创建爬虫
scrapy genspider<爬虫名字><允许爬取的域>
说明:
三个参数:name(爬虫名字)、allowed_domains(允许爬取的域)、start_urls(设置起始url,我们只需要设置就好,一般会被自动设置为成请求发送。)
一个方法:parse方法:解析方法,通常用于起始url对应响应的解析。
3.完成爬虫
(1)修改起始url,一般如果按默认,一般不准,所以起始url需要修改。
(2)检查域名。
(3)在parse方法中实现爬虫逻辑。对于长代码,一般会分方法进行编写。
注意:在使用scrpy中使用xpath等,可以需要使用response.xpath方法,这个方法返回的是一个列表。在这里我们需要使用额外的方法:extract_first()和extract()。
当xpath的结果为只含一个值的列表,可以使用extract_first()(如果列表中没有数据,会返回None,不会报错),如果为多个值则使用extract()(数据为空则会报错)。
parse()函数中使用yield返回数据。注意:解析函数中的yield能够传递的对象只能是:Baseliem,request,dict,None。
4.保存数据
在process_item方法设置管道,保存数据需要在process_item中进行保存。如果要保存文件,可以设置open,建立两个方法,不断对文件进行写入数据,即写入一条数据后就调用方法关闭文件,写入下一条时,先打开文件,又写入数据,再关闭文件。
注意:在写process_item方法,我们需要在settings.py配置启用管道。
ITEM_POPELINE={
'-----------------'
}
把注释去掉,管道的优先顺序,由设置的数据来确定优先级,一般1000以内,值越小,优先级越高。
5.scrapy数据建模和请求:
应用于翻页、数据传递等。(其实就是定义名字,就像定义一个字典,只不过字典在出现新的,会添加,而调用建模,如果定义不存在会报错。)
数据建模在item.py中进行建模,定义item目的是为了确定字段,提前规划好爬取的字段,这样他会自己检查。
建模方法:
进入item.py文件,在方法中编辑。(注意要给定义进行注释)
name = scrapy.Field()
title = scrapy.Field()
.
.
.
.
.
在完成定义后,对建模调用,则会自动检查名字是否正确,不正确会报错。
注意:
1.在from import文件,无法调取,可能是当前文件路径没有在爬虫中。
2.从item.py调用item对象时,数据时json数据,这时候我们需要将他强行转换为字典,这个操作只能在scrapy中使用。
item = dict(item)