strat_url:https://book.jd.com/booksort.html
文章末尾有完整的项目链接

1.创建项目

scrapy startproject jd_book
cd jd_book
scrapy genspider jdBook jd.com

然后会出现以下文件

2.修改项目设置(settings.py)



3.编写爬取内容字段(items.py)

    b_title = scrapy.Field()s_title = scrapy.Field()href = scrapy.Field()book_img = scrapy.Field()book_name = scrapy.Field()book_url = scrapy.Field()sku = scrapy.Field()author = scrapy.Field()price = scrapy.Field()

4.编写爬虫(jdBook.py)

# -*- coding: utf-8 -*-
import scrapy,json,time
from copy import deepcopy
from ..items import JdBookItemclass JdbookSpider(scrapy.Spider):name = 'jdBook'allowed_domains = ['jd.com','360buyimg.com','p.3.cn']start_urls = ['https://book.jd.com/booksort.html']def parse(self, response):item=JdBookItem()dl_list=response.xpath('//div[@class="mc"]/dl')for dl in dl_list:item['b_title']=dl.xpath('./dt/a/text()').extract_first()em_list=dl.xpath('./dd/em')for em in em_list:item['s_title']=em.xpath('./a/text()').extract_first()item['href']='https:'+em.xpath('./a/@href').extract_first()yield scrapy.Request(item['href'],callback=self.book_list,meta=deepcopy({'item':item}))def book_list(self,response):#列表页item=response.meta['item']li_list=response.xpath('//div[@id="J_goodsList"]/ul/li')for li in li_list:item['sku']=li.xpath('./@data-sku').extract_first()item['book_url']='https://item.jd.com/{}.html'.format(item['sku'])# print(item['sku'])yield scrapy.Request(item['book_url'],callback=self.book,meta=deepcopy({'item':item}))#翻页sum_page=response.xpath('//span[@class="p-skip"]/em/b/text()').extract_first()if sum_page is not None:sum_page=(sum_page)for i in range(2,int(sum_page)):url=str(item['href']).replace('-','%').join('?page={}').format(i)print(url)yield scrapy.Request(url,callback=self.book_list,meta=deepcopy({'item':item}))def book(self,response):#详情页item=response.meta['item']item['book_name']=response.xpath('//div[@id="name"]/div[@class="sku-name"]/text()').extract()item['book_name']=[i.strip() for i in item['book_name'] if len(i)>=1]item['book_name']=''.join(item['book_name'])item['book_img']='http:'+response.xpath('//div[@id="spec-n1"]//img/@src').extract_first()item['author']=response.xpath('//div[@class="p-author"]//text()').extract()item['author']=[i.strip() for i in item['author'] if len(i)>=1]item['author']=''.join(item['author'])# print(item)yield scrapy.Request("https://p.3.cn/prices/mgets?skuIds={}".format(item["sku"]), callback=self.price, meta={'item': deepcopy(item)})def price(self, response):#获取图书价格jsonitem = response.meta['item']item['price'] = (json.loads(response.body.decode()))[0]['op'] + "¥"# print(item)yield item

5.编写管道保存数据(pipelines.py)

6.编写中间件(middlewares.py)

        ua = random.choice(spider.settings.get('USER_AGENT_LIST'))request.headers['User-Agent'] = ua

7.创建一个py文件运行scrapy爬虫(run_jd_book.py)

import os
os.system('scrapy crawl jdBook --nolog')

8.运行结果展示


jd.csv文件展示

完整的项目链接

链接:https://pan.baidu.com/s/1cduUC1vIvGyOD1ch2k4N6Q
提取码:x84q

scrapy爬取京东图书的数据相关推荐

  1. 使用scrapy爬取京东的手机数据

     使用scrapy爬取京东的数据 本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中 一.项目介绍 主要目标 使用scrapy爬取京东上所有的手机数据 将爬取的数据存储 ...

  2. Scrapy爬取豆瓣图书Top250数据,在PowerBI中可视化分析

    文章目录 项目说明 Scrapy框架 网页分析 爬虫代码 items spiders pipelines main 爬取结果 PowerBI分析 分析结果 项目说明 近期在学习Python爬虫,看了很 ...

  3. 爬虫学习:爬取京东图书

    爬虫学习:scrapy爬取京东图书,详情页url地址对应的响应并不能满足数据提取的需要price字段(即当前url地址对应的响应与element中不一样存在缺失,所以需要构造能够获取价格的请求) # ...

  4. python爬虫爬取京东商品评价_网络爬虫-爬取京东商品评价数据

    前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...

  5. 网络爬虫-爬取京东商品评价数据

    前段时间做商品评价的语义分析,需要大量的电商数据,于是乎就自己动手爬取京东的数据.第一次接触爬虫是使用selenium爬取CNKI的摘要,基于惯性思维的我仍然想用selenium+Firefox的方法 ...

  6. 一个scrapy框架的爬虫(爬取京东图书)

    我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...

  7. python爬取京东书籍_一个scrapy框架的爬虫(爬取京东图书)

    我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...

  8. scrapy+selenuim中间件爬取京东图书有详细思考过程(涉及较广适合练手)

    网上很多版本的爬取京东图书都失效了 现在这个版本是能运行的截至到编辑的日期的前后(往后不敢保证) gitee仓库网址:https://gitee.com/cc2436686/jd_book_spide ...

  9. python爬取京东手机数据_用scrapy爬取京东的数据

    本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...

最新文章

  1. 一文看透汽车芯片!巨头布局技术路线全解密【附下载】| 智东西内参
  2. 35个立体动感的视差滚动效果网站作品
  3. 小程序存emoji表情 不改变数据库
  4. Linux入门——文件管理
  5. OpenCV相机校准camera calibration的实例(附完整代码)
  6. TSD(Thread Specific Data)线程专有数据
  7. Linux crypto相关知识的汇总 Linux加密框架crypto对称算法和哈希算法加密模式
  8. python map函数返回类型_使用map和lambda函数发送两个参数并返回两个值
  9. python名词解释数据仓库_python实现数据仓库ETL
  10. tarjan求桥、割顶
  11. PyQt教程 - pythonQt的安装和配置及版本间差异
  12. Java关于周跨年的周数计算,编写一个JAVA类,用于计算两个日期之间的周数。
  13. acm 算法 java_【经验总结】Java在ACM算法竞赛编程中易错点
  14. Neo4j 图数据科学应用 - 图目录和图投影(二)
  15. arm学习方法(转)
  16. linux下的web服务器压力测试工具之ab
  17. Guessing Game
  18. 网关短信 群发 为什么卡发短信 群发 贵 ?
  19. java 文字转换成语音 代码_java文字转语音播报功能的实现方法
  20. 使用Lodop进行web 打印(jatoolsPrinter,墙外打印控件 楚琳Web打印控件)

热门文章

  1. Python的面试题/测试题汇总,带答案
  2. 360篡改Edge、Google浏览器主页的应对方法
  3. 126邮箱OUTLOOKS设置
  4. [CTS2019]氪金手游(容斥+树形背包DP)
  5. 学生选课系统E-R图以及登录,选课流程图
  6. ByVal和ByRef有什么区别
  7. Docker系列五基于CentOS制造镜像
  8. TIOBE 8 月编程语言排行榜:数据挖掘和人工智能语言强势崛起!
  9. openstack placement
  10. 小游戏-在评论留下你的运行结果吧