专栏首页木下学PythonPython之Scrapy框架当当网口红爬虫

Python之Scrapy框架当当网口红爬虫

简介

今天小编给大家带来的是使用 Python 的 scrapy 框架快速写一个“当当网”的"口红"商品的名称,价格,评论人数,链接的爬虫,存储数到 json 文件,目标“http://search.dangdang.com/?key=口红&act=input&page_index=1 ”

文件获取

关注公众号“爬虫康康”,回复关键字“口红”获取源代码文件

开发环境

及配置

Python版本:3.6

编译器:pycharm

框架:scrapy

安装:scrapy 框架依赖许多第三方库,所以在安 装之前需确保以下第三方库已经安装

  1. lxml库:pip install lxml
  2. zope.interface库:pip install zope.interface
  3. pyOpenSSL库:pip install pyopenssl
  4. twisted库:不能通过 pip 安装,通过 whl 文件安装,网址为: ‘http://www.lfd.uci.edu/~gohlke/pythlibs/’ 下好 whl 文件后,代开 cmd 切换到文件所在地址,pip install 文件名,即可完成安装
  5. pywin32库:与 twisted 库一样的安装方法;下好后要对其进行配置: 1)在本机 Python 安装的包中找到 pywin32 库复制器所有文件(2个) 2)复制到 C:\Windows\System32 路径下
  6. Scrapy库:pip install scrapy

创建项目文件

一、创建目录文件夹

在想要创建项目的路径文件夹,按住 Shift 右键,点击“在此处打开 PowShell 窗口”,如下图

输入创建项目文件夹的命令:

scrapy startproject dangdang_kouhong

后面的项目名可以自己命名,但必须是英文的,如下图

二、用现有的爬虫模板创建爬虫文件

进入项目文件夹,按住 Shift 右键,点击“在此处打开 PowShell 窗口”,输入命令,如下图

scrapy genspider -l

从图中可见可用模板有四个,我们用第一个基础模板就可以,输入命令:

“scrapy genspider -t basic kouhong dangdang.com”

basic为模板名字,kouhong为爬虫文件名,dangdang.com为域名,如下图

项目文件简介

一、dangdang_kouhong

项目核心文件夹

二、scrapy.cfg

框架配置文件

三、spider文件夹

里面默认有一个初始化文件 __init__.py,用爬虫模板创建的 kouhong.py 爬虫文件在这里面

四、__init__.py

初始化项目文件

五、items.py

用来定义包保存的数据的容器

六、piplines.py

实体管道,用来存储数据,对数据进行操作,例如保存到 txt,json,数据库等

七、settings.py

项目的配置文件,例如项目是否遵守 robot 协议,是否让浏览器识别 cookie,开启 piplines.py 文件

八、middlewares.py

中间下载件,给爬虫进行扩展,例如代理池,cookie 池的设置

item.py编写

settings.py配置

一、配置爬虫是否遵守 robot 协议,默认是遵守,如下图

要改为不遵守,把 True 改为 False,如下图

二、cookies 配置,为了让浏览器不能识别我们 本地的 cookies,识别不出是爬虫行为,如下图

把注释删掉就启动了

三、piplines.py 实体管道的开启,同上理,把注释删掉

piplines.py编写

1.__init__(self)方法

构造函数,创建一个 json 文件,以二进制 ‘wb’ 写入编码格式为‘utf-8’

2.process_item(self, item, spider)方法

处理数据,抓到的每一页数据是以 {name:[...],price:[...],comment:[...],link:[...]} 字典得到的,通过循环把每一个商品的数据一一对应后写入文件

3.json_close(self,spider)方法

写入一次数据就要关闭一次文件

kouhong.py编写

1.导入scrapy,存储数据的容器的类,访问请求的库

2.start_urls列表的值改成当当网口红商品的第一页

3.parse((self, response)方法写的是爬取数据逻辑;先实例化数据容器的类;再利用 xpath 爬取,别忘了后面加 .extract(),其为解析数文本的函数;捕获异常是小编调试的时候发现一个商品的名称提取时被分开了,这里是合并名称;提取往后使用迭代器 yield 返回;最后是一次访问每一页的每一页,注意返回函数 callback=parse 这里是没有括号的

测试运行

在项目文件打来命令窗口输入命令

scrapy crawl kouhong

kouhong 为创建的爬虫文件,会有如下数据显示则代表成功,打开 json 文件查看

数据分析

提取数据后,我们可以进行数据分析,从而得到想要的数据价值,什么饼状图啊,条形图,散点图,折线图等。。。。。

,,,

,,,

好吧,接下来我并不会了。。。

本文分享自微信公众号 - 木下学Python(zjk_py),作者:康康

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python之Scrapy海报资源海量下载

    今天小编给大家带来的是使用 Python 的 scrapy 框架快速写一个“千图网”的海报原图下载的爬虫,可以给设计专业的相关的人下载图片参考设计海报,也可在活...

    用户6825444
  • Python 分析城市麦当劳数的多少

    前几天,小编跟着两个朋友,在深圳的商圈逛了逛,沿途看见了好几家麦当劳,他们两就随意的说了说,麦当劳数量有点多呢,到底是为什么呢?一个城市的麦当劳数量和什么有关呢...

    用户6825444
  • 爬虫 | 五八字体反爬

    https://sz.58.com/ershouche/pn2/?PGTID=0d100000-0000-4e81-5801-e3cfbaae2802&Clic...

    用户6825444
  • 便宜可靠的激光雷达可能要来了!Luminar关键部件成本降到3美元

    激光雷达(Lidar)比车还贵的价格和永远缺货的状态,已经成了无人车行业发展的一块巨大绊脚石。

    量子位
  • Matlab基本语法7

    基本编程技巧 脚本m文件和函数m文件,脚本是一系列命令、语句的简单组合。脚本文件中的变量都是全局变量,程序运行后,这些变量保存在matlab的基本工作空间内,一...

    anytao
  • Linux中怎么实现文件的拆分和合并

    linux中: 文件的合并: 创建两个文件a, b :touch a b  cat a > b 是把a的内容写到b中,b中的内容会被覆盖 cat a >...

    武军超
  • bboss会话共享 原

        区别于官方demo,这里介绍的是集群项目的session共享,以下是项目属性:

    尚浩宇
  • HLS Lesson18-定义ROM

    定义一个ROM (1)const + initial value 优点:简单易操作 缺点:如果初始化的值过多的话,这样代码会繁琐,引起管理混乱 (2)使用头文...

    anytao
  • Carbon:交互式反汇编工具

    Cerbero Suite是为x86/x64设计的一款交互式反汇编工具。最初的目的是为了让我们的用户能够检查内存转储中的代码以及shellcode。如今,市面上...

    FB客服
  • 数据库中间件分片算法之date

    今天看了一个视频是关于梅西和C罗的,视频的主题是问他们两个是不是朋友?结果可想而知,两个人私底下很较劲,梅西投票从来没投给过C罗,C罗也从来没投过梅西,2个人在...

    BuddyYuan

扫码关注云+社区

领取腾讯云代金券