首页 > 其他 > 详细

scrapy框架简单使用样例——以当当网为例

时间:2021-09-09 06:59:08      阅读:15      评论:0      收藏:0      [点我收藏+]

scrapy框架简单使用样例——以当当网为例

  1. 要爬取的地址为http://category.dangdang.com/cp01.01.02.00.00.00.html

  2. 创建项目,命令行运行命令 scrapy startproject 项目名称 (这里命名为dangdang)
    项目结构如下:

    技术分享图片

  3. 命令行cd命令进入技术分享图片
    该目录下输入命令scrapy genspider 爬虫名称 爬取域名 (这里是dangspider)回车后会发现spiders下面多了一个dangspider.py的文件技术分享图片

  4. 打开dangspider.py文件可以看一下技术分享图片

parse函数中的response相当于第三方库中requests.get(url)返回的response,具有类似的属性和方法,parse函数中可以编写对响应内容进行处理的代码

  1. 打开要爬取的当当的网址,对要爬取的内容进行分析

技术分享图片
要爬取三部分内容为三部分内容,分别是书名、价格、图片地址

  1. 根据要爬取的内容在items.py文件中定义相应的数据结构,如下
    技术分享图片

  2. 为要提取的部分编写xpath表达式,可以打开浏览器插件xpath helper,如下:

  • 技术分享图片
    书名xpath提取表达式//ul[@id=‘component_59‘]/li//img/@alt

  • 技术分享图片
    技术分享图片
    通过观察标签我们发现data-original属性,为此可以断定是图片是懒加载的方式,为此我们提取该属性的值回获取图片的url地址,图片url提取xpath表达式为//ul[@id=‘component_59‘]/li//img/@data-origina(上面第一张图),但是通过观察可以发现每一页的第一本书的图的表情没有data-origina属性,为此对于每一页的的第一条数据进行特殊处理提取其src属性,xpath表达式 //ul[@id=‘component_59‘]/li//img/@src(上面第二张图)

  • 技术分享图片
    价格提取xpath表达式//ul[@id=‘component_59‘]/li//p[@class=‘price‘]/span[1]/text()

  1. 根据上一步的分析,编写parse函数
    技术分享图片

  2. 开启管道
    技术分享图片

  3. 为管道编写相关函数,我们将爬取的数据保存为json文件,一个对象为json文件一项纪录,process_item函数中的item就是yield送过来的对象

技术分享图片

  1. 我们可以对书的图片进行下载,为此我们可以开辟另外一条管道专门用于图片的下载,图片保存到当前目录下的books文件夹下,为此我们创建books文件夹
    技术分享图片

  2. 对于图片的下载的这条管道我们需要在setting.py文件中进行配置,并设置相应的管道优先级,优先级是数字越小优选级越大

技术分享图片

13.最后运行爬虫 scrapy crawl dangspider
技术分享图片

  1. 运行结果
    技术分享图片

可以看到数据被保存到books.json文件里了

技术分享图片

当页的图片也成功的爬取下来了。

scrapy框架简单使用样例——以当当网为例

原文:https://www.cnblogs.com/daweiguo/p/15239993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!