一、 安装Scrapy库遇到的问题
使用pip安装,出现找不到安装包的问题,可能是国内网络的问题,使用国内镜像源加速成
pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
二、scrapy爬虫流程
- 普通爬虫流程
- scrapy框架爬虫流程
说明
三、scrapy简单使用
- 创建一个scrapy爬虫项目
scrapy startproject 项目名
注意
①此时会在当前路径中创建一个爬虫文件夹
②爬虫文件spiders中的只有init.py一个文件
- 进入爬虫文件夹并创建爬虫
cd 爬虫文件夹
scrapy genspider baidu baidu.com
baidu:爬虫名
baidu.com:爬虫的域名
注:
①此时爬虫文件夹中的spiders文件夹会自动创建爬虫的py文件,文件名为创建爬虫时的名字
②可同时在一个爬虫项目中创建多个爬虫文件,而这些爬虫文件全部存在于spiders文件夹中
③parse函数中的response是start_url请求的响应,类型是一个对象。
3. 提取数据
完善spider,使用xpath等方法
# -*- coding: utf-8 -*-
import scrapy
class BaiduSpider(scrapy.Spider):
name = 'baidu' # 爬虫名
allowed_domains = ['baidu.com'] # 允许爬虫的范围
start_urls = ['https://www.baidu.com'] # 最开始的url地址--根据自己需求可自行更改
def parse(self, response):
'''处理start_urls对应的响应(提取数据)'''
print(type(response))
item = response.xpath('//a[@id="s-top-username"]/span[starts-with(@class,"user-name")]/text()') # 返回特殊类型的列表,没有爬取到元素则返回空列表
print(item)
yield item
注:
①处理响应数据时的函数名必须是parse,不可更改
②使用yield生成器将提取到的数据item传递给pipelines
③运行爬虫
scrapy crawl 爬虫名
在创建的爬虫项目文件夹路径下运行程序
③设置日志等级
不设置日志等级时
- 保存数据
pipeline中保存数据
-
开启pipeline服务
注:
①pipeline可以处理多个数值(多个类),拥有多个管道,处理数据前需要开启的所有要处理数据的pipeline类,并指定具体的距离大小。
②后面的数值越小,表示距离搜索引擎越近,数据越早被处理
③开启pipeline服务中的键实际上是pipelines中FirstscrapyPipeline类对应的位置 -
处理数据
class FirstscrapyPipeline(object):