目录

​一、学习资源​

​二、知识点介绍​

​1、scrapy介绍​

​ 2、scrapy安装与错误解决​

​3、scrapy基本使用​

​4、项目结构和基本方法 ​

​         (1)实例: ​

​5、架构组成​

​ 6、scrapy工作原理​

​        (2)实例:汽车之家 ​

​三、项目分析​

​        (1)首先定位到要获取的数据的标签的属性​

​        (2)获取数据​

​         (3)检查​

​                问题①​

​                原因及解决办法​

​                问题②​

​                原因及解决办法​

​         (4)下载(单个管道)​

​                        ①先定义数据结构(items程序)​

​                        ②管道下载​

​                         ③下载数据到文件中​

​                 (5)多个管道下载​

​                                        ①定义管道类​

​                                         ②在settings中开启管道​

​              (6)多个管道下载实现​

​ 四、项目源码​


一、学习资源

二、知识点介绍

1、scrapy介绍

python项目之当当网_数据

 2、scrapy安装与错误解决

python项目之当当网_项目结构_02

3、scrapy基本使用

 

python项目之当当网_数据挖掘_03

python项目之当当网_python_04

python项目之当当网_数据挖掘_05

4、项目结构和基本方法 

python项目之当当网_项目结构_06

         (1)实例: 

python项目之当当网_数据_07

5、架构组成

 6、scrapy工作原理

python项目之当当网_数据_08

        (2)实例:汽车之家 

python项目之当当网_数据挖掘_09

python项目之当当网_数据_10

python项目之当当网_python_11

三、项目分析

        (1)首先定位到要获取的数据的标签的属性

python项目之当当网_python_12

        (2)获取数据

上一个案例用的是把所有的数据下下下来保存到一个列表中,然后再通过遍历的方式去一个一个收数据的取,这里介绍一个新的方法:seletor对象可以再次调用xpath方法,也就是说先把统一的路径给分离出来,然后再调用xpath。

python项目之当当网_项目结构_13

         (3)检查

                问题①

                        所有的图片路径都是一样的

        

python项目之当当网_数据挖掘_14

                原因及解决办法

                        这是一种常见的反爬手段,图片的懒加载,即图片的真正路径不是@src了(除了第一个以外),发现问题之后再去检查网页,发现除第一个以外的图片路径为@data-original。

                        第一次路径:

python项目之当当网_数据挖掘_15

                        之后的路径:

python项目之当当网_项目结构_16

                问题②

python项目之当当网_数据挖掘_17

                        当把路径改为@data-original之后,发现第一张图片为none

                原因及解决办法

                        检查之后发现其实第一章图片的位置没有变,只是后面的懒加载所以变了,所以此处要进行判断。当是第一张图片的时候路径就为@src,其它情况为@data-original。

                

python项目之当当网_数据_18

         (4)下载(单个管道)

                        ①先定义数据结构(items程序)

python项目之当当网_python_19

                        ②管道下载

                                (1)先在settings中开启管道 解开ITEM_PIPELINES的注释

                                (2)将获取的值传入管道中

python项目之当当网_项目结构_20

                         ③下载数据到文件中

python项目之当当网_数据_21

注:这种模式不推荐 因为每传递过来一个对象 那么打开一个文件 对文件的操作过于频

 改进:

python项目之当当网_python_22

                 (5)多个管道下载

                                        ①定义管道类

                                         ②在settings中开启管道

 

python项目之当当网_项目结构_23

python项目之当当网_数据_24

              (6)多个管道下载实现

每一页的爬取的业务逻辑全部都是一样的,所以我们只需要将执行的那个页的请求再次调用parse方法就可以了(注意页码的变化),页码的变化会引起url的变化,这是需要注意的点

python项目之当当网_python_25

python项目之当当网_数据挖掘_26

 四、项目源码

        此项目包含多个函数和文件,需要源码的评论区留言即可。