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

2023-09-20 18:41:38 浏览数 (2)

简介

今天小编给大家带来的是使用 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:WindowsSystem32 路径下
  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 文件查看

数据分析

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

,,,

,,,

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

0 人点赞