文章目录

  • 简单爬取苏宁书籍网站
    • 参考网址:
    • 整个爬取过程思路:
      • 未解决的问题:
      • 代码如下:

简单爬取苏宁书籍网站

参考网址:

网址1:https://book.suning.com/
网址2:https://list.suning.com/1-502325-0.html
网址3:https://product.suning.com/0070213869/10580157816.html?safp=d488778a.10038.resultsRblock.12&safc=prd.3.ssdln_502325_pro_pic01-1_0_0_10580157816_0070213869

整个爬取过程思路:

1.(parse函数)(进入网址1,在左边栏的"全部商品分类"下面)先爬取book大分类的类型,例如:文学艺术、少儿...
2.(parse函数)爬取每个大分类下的小分类的类型,例如:文学艺术下有:小说、散文随笔、青春文学...
3.(parse_book_list函数)进入步骤2中每个小分类的url下,这个网页下有很多关于书的商品,爬取每个书商品栏对应的书名和对应的url
4.(parse_book_detail函数)进入步骤3中每本书下对应的url,然后爬取对应的作者名字(想爬取价格,虽然在浏览器检查里  面有价格,但是在源码中是没有的,它是有一定逻辑拼接起来的url,有点复杂,所以不弄价格)
5.(parse_book_list函数)翻页操作:在每个小分类的url下,由于在浏览器最下面对应的码数是没有对应的url的而且翻页是应用ajax技术,所以可以打开F12里面的Network,然后点击下一页,在下面找到对应的ajax网页,从中找到有规律的url地址,然后在parse_book_list函数执行完 第3步 操作后添加翻页操作
6.在这次scrapy爬取中每个函数之间会传递item且是浅拷贝传递,而scrapy是多线程爬取,所以在多个线程同时执行时,会影响item里面的值。所以需要让item传递变成深拷贝的
7.为了防止浏览器发现是机器人,所以可以在settings里面引入USER_AGENT
8.把item保存为json格式文件

未解决的问题:

第3步中,爬取每个对应的书的书名和url,其实只爬取了几个,因为该网页是运用ajax技术,所以下面很多书的信息都没有爬取到,在这里不爬取先。

代码如下:

# -*- coding: utf-8 -*-
import scrapy
import re
import json
from copy import deepcopyclass SnSpider(scrapy.Spider):name = 'sn'allowed_domains = ['suning.com','suning.cn']start_urls = ['http://book.suning.com/']def parse(self, response):# 大分类的分组div_list = response.xpath("//div[@class='menu-list']/div[@class='menu-item']")for div in div_list:item= {}item['b_cata'] = div.xpath('./dl/dt/h3/a/text()').get()a_list = div.xpath('.//dd/a')# 小分类的分组for a in a_list:# 小说分类item['s_cate'] = a.xpath('./text()').get()item['s_href'] = a.xpath('./@href').get()yield scrapy.Request(item['s_href'],callback=self.parse_book_list,meta={"item":deepcopy(item)})def parse_book_list(self,response):item = response.meta['item']li_list = response.xpath('//ul[@class="clearfix"]/li')for li in li_list:# item['img_url'] = li.xpath('.//a[@class="sellPoint"]/img/@src2').get()# item['img_url'] = 'https:' + item['img_url']item['book_url'] = li.xpath('.//a[@class="sellPoint"]/@href').get()item['book_url'] = 'https:' + item['book_url']item['book_name'] = li.xpath('.//a[@class="sellPoint"]/img/@alt').get()yield scrapy.Request(item['book_url'],callback=self.parse_book_detail,meta={"item":deepcopy(item)})#https://list.suning.com/emall/showProductList.do?ci=502325&pg=03&cp=1"""param.currentPage = "1";param.pageNumbers = "100";  """currentPage = int(re.findall(r'param.currentPage = "(.*?)";',response.body.decode())[0])pageNumbers = int(re.findall(r'param.currentPage = "(.*?)";',response.body.decode())[0])ci = item['s_href'][26:32]if currentPage < pageNumbers:next_url = 'https://list.suning.com/emall/showProductList.do?ci=' + ci + '502325&pg=03&cp=' + str(currentPage+1)yield scrapy.Request(next_url,callback=self.parse_book_list,meta={"item":item})def parse_book_detail(self,response):item = response.meta['item']item['book_author'] = response.xpath('//ul[@class="bk-publish clearfix"]/li[1]/text()').get().strip()print(item)with open('book.json','a',encoding='utf-8') as f:f.write(json.dumps(item,ensure_ascii=False))

Scrapy笔记十二:简单爬取苏宁书籍网站相关推荐

  1. python获取今日头条搜索信息_python爬虫(十二、爬取今日头条关键词所有文章)

    今日头条 我们以搜索'妹子'为例 那 么 我 们 在 右 上 角 的 搜 索 框 搜 索 妹 子 , 出 来 了 一 系 列 文 章 那么我们在右上角的搜索框搜索妹子,出来了一系列文章那么我们在右上角 ...

  2. python爬虫(十二)爬取好看视频和新发地菜价

    好看视频 需求分析 爬取首页的视频,并分类存储于相应的文件夹内,视频名为网站上显示的文件名. 页面分析 打开好看视频首页,点击刷新会发现,每一次显示的视频是不一样的,所以爬取到的视频会出现跟看到的不一 ...

  3. 利用Eclipse-Python简单爬取京东商城书籍信息进行可视化

    [实验目的] 熟悉从网上爬取数据到将数据进行可视化的全部流程,通过实例了解并掌握每个过程. 了解爬虫爬取数据的原理,并选择一种语言编程,将数据获取到数据库. 熟练使用 eclipse 中 Java 语 ...

  4. 新闻网站爬虫及一个简单爬取结果的查询网站的实现

    1.新闻网站爬虫的实现 以新浪新闻为例,新闻的html按照下图的格式编码 'use strict'; var fs = require('fs'); var myRequest = require(' ...

  5. python爬取汽车之家_python爬虫实战之爬取汽车之家网站上的图片

    随着生活水平的提高和快节奏生活的发展.汽车开始慢慢成为人们的必需品,浏览各种汽车网站便成为购买合适.喜欢车辆的前提.例如汽车之家网站中就有最新的报价和图片以及汽车的相关内容,是提供信息最快最全的中国汽 ...

  6. 读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储

    2019独角兽企业重金招聘Python工程师标准>>> 今天这个小爬虫是应朋友,帮忙写的一个简单的爬虫,目的是爬取企查查这个网站的企业信息. 编程最终要的就是搭建编程环境,这里我们的 ...

  7. python 爬取企业注册信息_读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储...

    今天这个小爬虫是应朋友,帮忙写的一个简单的爬虫,目的是爬取企查查这个网站的企业信息. 编程最终要的就是搭建编程环境,这里我们的编程环境是: python3.6 BeautifulSoup模块 lxml ...

  8. scrapy爬取苏宁所有图书

    苏宁图书 https://book.suning.com/ 目标: 爬取苏宁图书下所有书本的系信息 爬取每个大分类(文学艺术)下的中间分类(小说)下的每个小分类(中国当代小说)的书本信息,并且进行翻页 ...

  9. Python爬虫新手入门教学(二十):爬取A站m3u8视频格式视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 前文内容 Python爬虫新手入门教学(一):爬取豆瓣电影排行信息 Python爬虫新手入门 ...

最新文章

  1. springboot源码 红色J_通达信副图指标源码之,出手就赢
  2. JAVA_NIO ,走进JavaNIO的世界
  3. 优化案例(part8)--Robust Recovery of Subspace Structures by Low-Rank Representation
  4. python3将字符串unicode转换为中文
  5. java if用法_java中if语句的写法
  6. Oracle IMPDP导入数据案例之注意事项(undo/temp)
  7. 蒙了吗?offsetLeft、offsetWidth、scrollTop、scrollWidth、event.pageX
  8. 图像分析demo android_10个JavaScript图像处理库,收藏好留备用
  9. 如何将链接的服务器从SQL Server“调试”到Oracle数据库实例
  10. DisSent: Learning Sentence Representations from Explicit Discourse Relations
  11. P2661 信息传递
  12. Lambda表达式妙用
  13. Python绘图新冠病毒COVID-19
  14. Word2010邮件合并(附带照片)
  15. VMware Workstation 17 Pro密钥
  16. 移动端html字体大小自适应,【css】移动端响应式布局与响应式字体大小
  17. 智能语音交互之简单实例
  18. 黄冈市2021高考成绩查询系统,黄冈师范学院
  19. 如何成为一名合格的数据产品经理?
  20. 大学计算机应用基础屈立成,五笔字型输入法教程-计算机应用基础教学网.PDF

热门文章

  1. CodeChef - RIN Course Selection (最小割建模)
  2. php 推送 短消息,php实现消息推送的方法
  3. 美国研制UFO飞行器 离地3米时速120公里(图)
  4. 提效利器,定时器软件,小巧、绿色、免费~
  5. 命令行中使用javap反编译class文件
  6. IDEA反编译class文件
  7. 三维技术撬动高精尖脉搏,三维扫描深入科技肌理
  8. snort mysql_snort 数据库
  9. 利用ASP.NET快速开发一款Web应用
  10. 解决安卓32位so兼容问题