1、创建一个项目
scrapy startproject mySpider
2、生成一个爬虫
scrapy genspider itcast itcast.cn # scrapy genspider <爬虫的名称><允许的域名>
爬虫文件的介绍
1、三个参数
name
allowed_domains 设置起始点url,我们只要设置就好,通常会自动创建
start_urls
2、一个方法
parse方法 解析方法,通常用于起始url进行解析
for node in node_list:
temp = {}
# xpath方法放回的是选择器对象列表,.extract()用于从选择器对象中提取数据
# .extract()和.extract()_first 如果xpath返回的为空时就不会报错,
# 但是如果返回的结果为多个时就不能使用.extract()__first
temp['name'] = node.xpath('./h3/text()')[0].extract()
temp['title'] = node.xpath('./h4/text()')[0].extract()
temp['desc'] = node.xpath('./p/text()')[0].extract()
yield temp
# print(temp)
3、提取数据
一、根据网站结构在spider中实现数据采集相关内容
二、scrapy的作用
①:scrapy.Spider爬虫类中必须有名为parse的解析
②:如果网站结构层次比较复杂,也可以自定义其他解析函数
③:在解析函数中提取的url地址如果要发送请求,则必须属于allowed_domains范围内,但是start_urls中的url地址不受这个限制,我们会在后续的课程中学习如何在解析函数中构造发送请求
④:启动爬虫的时候注意启动的位置,是在项目路径下启动
⑤:parse()函数中使用yield返回数据,注意∶解析函数中的yield能够传递的对象只能是:Baseltem,Request, dict,None
2、定位元素以及提取数据、属性值的方法
解析并获取scrapy爬虫中的数据:利用xpath规则字符串进行定位和提取
1.response.xpath方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是有一些额外的方法
2.额外方法extract0:返回一个包含有字符串的列表
3.额外方法extract_first():返回列表中的第一个字符串,列表为空没有返回None
3 response响应对象的常用属性
response.url:当前响应的url地址
response.request.url:当前响应对应的请求的url地址response.headers:响应头
response.reauests.headers:当前响应的请求头
4.保存数据
使用命令爬取数据并保持。
使用pipeline进行数据后续处理和保存
1在pipelines.py文件中定义对数据的操作
1.定义一个管道类
2.重写管道类的process_item方法
3. process_item方法处理完item之后必须返回给引擎
import json
class ItcastPipeline():
#爬虫文件中提取数据的方法每yield一次item,就会运行一次该方法为固定名称函数
def process_item(self, item, spider):
print(item)
return item
2、在settings.py配置启用管道
工TEM_PIPELINES = i
" myspider.pipelines.ItcastPipeline’ : 488
class QuotesPipeline:
def __init__(self):
self.file = open('itcast.json','w')
def process_item(self, item, spider):
# print('itcast:',item)
# 将字典数据序列化
# ensure_ascii=False 转换为中文
json_data = json.dumps(item,ensure_ascii=False) + ',\n' # 将字典格式转换为json格式
# 将数据写入文件
self.file.write(json_data)
return item
def __del__(self):
self.file.close()