scrapy介绍

Scrapy 是一套基于Twisted、纯python实现的异步爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,相当的方便~

整体架构和组成

  • Scrapy Engine(引擎)

引擎负责控制数据流在系统所有组件中的流动,并在相应动作发生时触发事件,是框架的核心。

  • Scheduler(调度器)

调度器从引擎接受request并将他们入队,在引擎再次请求时将请求提供给引擎。

  • Downloader(下载器)

下载器负责获取页面数据并提供给引擎,而后提供给spider。

  • Spider(爬虫)

Spider是Scrapy用户编写用于分析response并提取item(即获取到item)或额外跟进的URL的类,定义了爬取的逻辑和网页内容的解析规则。 每个spider负责处理一个特定(或一些)网站。

  • Item Pipeline(管道)

Item Pipeline负责处理被spider提取出来的item。典型的处理有清洗,验证及持久化(例如存取到数据库中)

  • Downloader Middlewares(下载中间件)

下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response(也包括引擎传递给下载器的Request)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。

  • Spider Middlewares(Spider中间件)

Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。

安装

pip install scrapy

爬虫项目

准备工作

  • 创建项目
scrapy startproject xingmingdq
  • 新建爬虫
scrapy genspider xingming resgain.net/xmdq.html

这个时候,目录下会创建xingmingdq文件夹,文件夹下就是xingmingdq scrapy项目,spiders下有xingming爬虫文件。

建立item

items.py中添加以下代码:

class Xingming_Item(scrapy.Item):name = scrapy.Field()xingshi = scrapy.Field()xingshi_zh = scrapy.Field()

爬取名字

爬虫文件spiders/xingming.py书写网页解析规则。

# -*- coding: utf-8 -*-
import scrapy
from xingmingdq.items import Xingming_Itemclass XingmingSpider(scrapy.Spider):name = 'xingming'# allowed_domains = ['www.resgain.net/xmdq.html']start_urls = ['http://www.resgain.net/xmdq.html']def parse(self, response):content = response.xpath('//div[@class="col-xs-12"]/a/@href').extract()for i in content:page = 0href = 'http:' + ibase = href.split('/name')[0] + '/name_list_'while page < 10:url = base + str(page) + '.html'page += 1yield scrapy.Request(url, callback=self.parse_in_html)# 解析每一页def parse_in_html(self, response):person_info = response.xpath('//div[@class="col-xs-12"]/div[@class="btn btn-default btn-lg namelist"]/div[@style="margin-top: 20px;"]')xingshi_zh = response.xpath('//div[@class="navbar-header"]/a/div[@style="text-align: center;"]/text()').extract()[0].split('姓之家')[0]xingshi = response.url.split('/')[2].split('.')[0]for every_one in person_info:name = every_one.xpath('./text()').extract()[0]the_item = Xingming_Item()the_item['name'] = namethe_item['xingshi'] = xingshithe_item['xingshi_zh'] = xingshi_zhyield the_item

处理流程

pipelines.py中,编写结果写入文件的处理。

class XingmingdqPipeline(object):def __init__(self):self.fp = open('xingming.csv', 'w', encoding='utf-8')def process_item(self, item, spider):self.fp.write('%s,%s,%s\n' % (item['name'], item['xingshi_zh'], item['xingshi']))return itemdef close_spider(self, spider):self.fp.close()

设置参数

要想执行pipelines,需要在settings.py中进行配置,搜索USER_AGENT和ITEM_PIPELINES进行修改。

# 修改USER_AGENT
USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)'
# 配置ITEM_PIPELINES
ITEM_PIPELINES = {'xingmingdq.pipelines.XingmingdqPipeline': 300,
}

执行爬虫

  • 命令执行
scrapy crawl xingming
  • 脚本执行

写入python文件,创建run.py,编辑下面代码,pycharm中运行。

import os
os.system("scrapy crawl xingming")

结果文件

词云分析

在线词云生成网站: https://www.weiciyun.com/

导入爬取的姓名数据,分析出图:

哈哈哈,最多的竟然是 婷婷

找找有你的名字没有吧。

python爬虫框架Scrapy采集数据,并制作词云图分析!相关推荐

  1. 精通python爬虫框架-精通Python爬虫框架Scrapy.pdf

    作 者 :(美)迪米特里奥斯·考奇斯·劳卡斯(Dimitrios Kouzis Loukas)著:李斌译 出版发行 : 北京:人民邮电出版社 , 2018.02 ISBN号 :978-7-115-47 ...

  2. 阅读《精通Python爬虫框架Scrapy》

    精通Python爬虫框架Scrapy 精通Python爬虫框架Scrapy 2018年2月的书,居然代码用的是Python2 环境使用的是Vagrant,但是由于国内网络的问题,安装的太慢了. 书里内 ...

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

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

  4. Python爬虫框架scrapy的用途及组件认识

    Python爬虫框架scrapy的用途及组件认识 今天简述一下Scrapy框架的大致处理流程,以方便大家更好的理解Scrapy的运行过程. Scrapy是一个快速.高层次屏幕抓取和web抓取pytho ...

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

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

  6. python处理数据集并制作词云图

    python处理数据集并制作词云图 处理数据 使用自定义词典 去掉停用词 词频统计 绘制词云图+美化 1.处理数据 这里是老师给的新闻数据集,里面有5个类别的新闻数据,我以cars这一类为例. 将cs ...

  7. 用 Python 爬虫框架 Scrapy 爬取心目中的女神

    From :http://www.cnblogs.com/wanghzh/p/5824181.html 本博文将带领你从入门到精通爬虫框架 Scrapy,最终具备爬取任何网页的数据的能力. 本文以校花 ...

  8. Python数据分析---回力评论关键字统计并制作词云图

    背景 想起前天爬虫拿回来的数据好像没怎么用,看了一下1000条评论有3w4千多字,然后今天决定对爬回来的回力帆布鞋的评论进行数据分析,把评论里面的关键字关键词统计出来并且制作词云图 一.思路 既然要统 ...

  9. 数据采集与存储案例——基于Python爬虫框架Scrapy的爬取网络数据与MySQL数据持久化

    此案例需要预先安装pymsql python3.7.4 scrapy2.7.1 一.安装scrapy框架 1.使用pip命令安装scrapy pip install scrapy 在这里下载太慢可以使 ...

最新文章

  1. PHP读取EXCEL
  2. python 并行计算 opencv_opencv-python计算影像
  3. 阿里工程师如何叫外卖?99%的人猜不到
  4. UVA dp题目汇总
  5. php 修改文件所有者,PHP 改变文件的所有者
  6. springbootredis连接池配置优化_spring boot rest 接口集成 spring security(2) – JWT配置
  7. 解决windows10 9926版本中无法访问samba的方法
  8. ImportError: libcudart.so.10.0: cannot open shared object file
  9. 低烟无卤计算机电缆,驻马店DZRDJYPV低烟无卤计算机电缆
  10. vista任务管理器_为什么我的Windows Vista资源管理器发送到菜单挂起或打开缓慢?...
  11. 《Linux就是这种范儿》读后感
  12. UIkit之滚动监听+动画特效
  13. 旁注攻击和CDN,绕过cdn找真实IP
  14. Linux如何检查是否支持SNI,WDCP下的纯Nginx支持多域名ssl证书(TLS SNI support disabled)解决方案...
  15. Log4j的基本应用
  16. Matlab的plot~各种颜色和线形
  17. 微信小程序:“去中心化”的社交电商,电商正转向以商品为核心
  18. JavaScript和Node.js的关系
  19. 去哪儿网查不到历史订单_12306网站上超过30天的历史订单去哪儿找纪录?
  20. linux文字命令窗口怎样截图,命令行中截图的小工具 - Linux就该这么学的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. laravel-admin 在列表页添加自定义按钮
  2. XML与HTML的作用不同
  3. 以小见大:如何设计注册登录页?
  4. 《编程珠玑(续)(修订版)》—第2章2.1节Awk中的关联数组
  5. PHP安装imagemagick扩展imagick
  6. eclipse-Java compiler level does not match the version of the installed Java project facet.
  7. 修改eclipse皮肤
  8. 读书笔记:《一生的计划》
  9. ES2020的新特性解读
  10. 60秒验证码倒计时重置