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

简介

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


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


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

文件获取

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

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


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

开发环境

及配置

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


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


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

创建项目文件

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


一、创建目录文件夹

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


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


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

scrapy startproject dangdang_kouhong

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


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


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

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

scrapy genspider -l


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


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

“scrapy genspider -t basic kouhong dangdang.com”

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


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


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

项目文件简介

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


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



一、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 池的设置


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

item.py编写

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


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


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

settings.py配置

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


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


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


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


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


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


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


把注释删掉就启动了


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


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


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


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


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

piplines.py编写

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


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


1.__init__(self)方法

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


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

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


3.json_close(self,spider)方法

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


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

kouhong.py编写

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


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


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


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


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


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

测试运行

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



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

scrapy crawl kouhong

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


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


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