python爬虫之scrapy框架

一、scrapy框架简介

scpay框架官方文档中文版本:https://scrapy-chs.readthedocs.io/zh_CN/latest/index.html

1.1 简介

Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

1.2 scrapy核心

  • Scrapy Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

  • Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

  • Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。

  • Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。

  • Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。

  • Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件。

  • Spider Middlewares(Spider中间件):一个可以自定扩展和操作引擎和Spider中间通信的功能组件。

二、scrapy框架的安装

2.1 使用anaconda进行安装scrapy

2.2.1 使用命令安装

pip install scrapy

2.2.2 使用anaconda进行安装

使用anaconda进行安装scrapy,找到对应的scrapy库进行安装即可。

2.2 创建scrapy项目

scrapy startproject spider

项目创建成功。

2.3 创建爬虫程序

创建项目后进入项目文件夹,执行该命令快速创建爬虫程序,后接爬虫名、爬去站点的域名,将在spiders文件夹下生成一个基本框架的爬虫程序。

scrapy genspider [name] [domain]

2.4 保存文件

scrapy crawl [name] -o [file]

该条命令是运行name名字的爬虫,并将数据保存为file,注意file是带格式的文件名,目前支持json、json lines、csv、xml、pickle、marshal。

2.5 scrapy常用的命令

三、scrapy爬虫案例

3.1 创建爬虫项目

scrapy startproject spider

3.2 创建爬虫程序

scrapy genspider job 51job.com

3.3 编写核心爬虫代码

这里采用的是xpath的方式

3.3.1 源代码

import scrapyclass JobSpider(scrapy.Spider):name = 'job'  # 爬虫名字allowed_domains = ['51job.com']  # 域名start_urls = ['https://search.51job.com/list/020000,000000,0000,00,9,99,python,2,1.html']  # 爬虫开始采集的网站def parse(self, response):'''解析数据的的,response就是start_url网址返回的数据:param response::return:'''# print(response.text)# 选择出网址selectors = response.xpath('//div[@class="e"]')for selector in selectors:url = selector.xpath('./a/@href').get()  # 接着上一步的xpath继续选择要加个.# print(url)if url:yield scrapy.Request(url, callback=self.parseDetail)def parseDetail(self, response):salary = response.xpath('//div[@class="cn"]/strong/text()').get(default='')title = response.xpath('//div[@class="cn"]/h1/text()').get(default='')# com = response.xpath('//div[@class="er"]/a/text()').get(default='')items={'薪资':salary,'职位':title}yield items# return items

3.3.2 设置请求头

3.4 保存到csv文件当中

scrapy crawl job -o job.csv

python爬虫之scrapy入门相关推荐

  1. python数据分析案例2-1:Python练习-Python爬虫框架Scrapy入门与实践

    本文建立在学习完大壮老师视频Python最火爬虫框架Scrapy入门与实践,自己一步一步操作后做一个记录(建议跟我一样的新手都一步一步进行操作). 主要介绍: 1.scrapy框架简介.数据在框架内如 ...

  2. 【python 爬虫】 scrapy 入门--爬取百度新闻排行榜

    scrapy 入门–爬取百度新闻排行榜 环境要求:python2/3(anaconda)scrapy库 开发环境:sublime text + windows cmd 下载scrapy(需要pytho ...

  3. 10分钟python爬虫_python scrapy 入门,10分钟完成一个爬虫

    在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...

  4. Python爬虫框架 scrapy 入门经典project 爬取校花网资源、批量下载图片

    ####1.安装scrapy 建议:最好在新的虚拟环境里面安装scrapy 注意:博主是在 Ubuntu18.04 + Python3.6 环境下进行开发的,如果遇到安装scrapy不成功请自行百度/ ...

  5. Python爬虫框架Scrapy入门(三)爬虫实战:爬取长沙链家二手房

    Item Pipeline介绍 Item对象是一个简单的容器,用于收集抓取到的数据,其提供了类似于字典(dictionary-like)的API,并具有用于声明可用字段的简单语法. Scrapy的It ...

  6. python 爬虫框架scrapy 入门 爬取博客园新闻(代码)

    1.代码jobbole.py写爬取策略, 2.settings.py  配置pipelines.配置图片下载.配置是否遵循robote协议.数据库配置等 3.pipelines.py 主要是配置数据存 ...

  7. python爬虫之Scrapy介绍八——Scrapy-分布式(以爬取京东读书为示例)

    Scrapy-分布式(scrapy-redis)介绍 1 Scrapy-分布式介绍 1.1 Scrapy-redis工作原理 1.2 Scrapy-redis 安装和基本使用 1.2.1 安装 1.2 ...

  8. python常用命令汇总-Python爬虫框架Scrapy常用命令总结

    本文实例讲述了Python爬虫框架Scrapy常用命令.分享给大家供大家参考,具体如下: 在Scrapy中,工具命令分为两种,一种为全局命令,一种为项目命令. 全局命令不需要依靠Scrapy项目就可以 ...

  9. Python爬虫开发从入门到实战

    Python爬虫开发从入门到实战(微课版) 第1章 绪论 爬虫的主要目的是获取网页内容并解析.只要能达到这个目的,用什么方法都没有问题. 关于获取网页,本书主要介绍了Python的两个第三方模块,一个 ...

  10. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

最新文章

  1. JDBC连接各种数据库方法
  2. nginx ngx_modules
  3. 提高性能:流的非阻塞处理
  4. MySQL_数据库操作
  5. VB利用资源文件进行工作
  6. linux上openmp测试
  7. python字典弱引用_weakref
  8. 弘辽科技:手淘推荐流量总是忽高忽低如何稳定获取
  9. unity虚拟摇杆控制的实现
  10. js根据本地文件路径上传文件(流上传)
  11. win7升级Internet Explorer 11 先决条件更新
  12. android jcenter google 镜像
  13. Web2.0的系统架构与六大关键问题
  14. 图像处理+机器学习相关资源整合
  15. Markdown符号:整除、不整除、恰整除、不恰整除
  16. 在word/wps插入代码+保持源代码风格+加行号
  17. SQLZOO刷题笔记
  18. B/S架构与C/S架构
  19. 安科瑞企业综合能效管理系统 时丽花
  20. 15 Rest高级客户端实践(一):文档索引

热门文章

  1. Android原生系统真的那么好用吗?安卓原生系统吊打其他系统,因为有Google-Play
  2. 你技术这么好,总要改变点什么把!
  3. 二、echarts地图从全国进省从省进市
  4. 极域电子书包课堂管理系统
  5. 用极域课堂软件卸载软件
  6. 计算机网络硬件开关win7,大师为你win7系统笔记本无线网络红叉电脑网络连接不可用的修复办法_...
  7. 华为公司“22个不”
  8. centos7安装/卸载pip
  9. java项目:基于springboot高校党建管理系统(springboot+vue+mysql+redis) 1010
  10. 制作卡通人物的3种简单方法