使用scrapy爬取suning
# -*- coding: utf-8 -*- import scrapy from copy import deepcopy class SuSpider(scrapy.Spider): name = 'su' allowed_domains = ['suning.com'] start_urls = ['http://list.suning.com/?safp=d488778a.error1.0.4786e76351'] def parse(self, response): # 获取大分类列表 bcate_list = response.xpath("//div[@class='allsortLeft']/ul/li") for bcate in bcate_list: item = {} # 获取大分类class的值 class_name = bcate.xpath("./@class").extract_first() # 获取所有大分类的名称 item["BCate"] = bcate.xpath("./a/span/text()").extract_first() # print(item["BCate"]) # 根据大分类的class定位每个大分类下的所有小分类 scate_list = response.xpath("//div[@class='{}']/div".format(class_name)) for scate in scate_list: # 小分类的名称 item["SCate"] = scate.xpath("./div[1]/a/@title").extract_first() # 获取每个小分类下的所有标签 tag_list = scate.xpath("./div[2]/a") for tag in tag_list: # 每个标签的链接和名称 item["tag"] = tag.xpath("./text()").extract_first() item["tag_link"] = "http:" + tag.xpath("./@href").extract_first() # 进入列表页 yield scrapy.Request( item["tag_link"], callback=self.good_list, meta={"item": deepcopy(item)} ) def good_list(self, response): item = deepcopy(response.meta["item"]) # 获取当前页的所有商品列表 li_list = response.xpath("//div[@id='product-wrap']/div/ul/li") for li in li_list: # 获取商品的图片地址,名称,价格,商品详情页的链接 item["good_img"] = "http:"+li.xpath(".//div[@class='res-img']/div/a/img/@src").extract_first() item["good_name"] = li.xpath(".//div[@class='res-info']/div/a/text()").extract_first() item["good_price"] = li.xpath(".//div[@class='res-info']/div/span/text()").extract_first() item["good_href"] = li.xpath(".//div[@class='res-info']/div/a/@href").extract_first() # 进入商品详情页 if item["good_href"] != "javascript:void(0);": yield scrapy.Request( "http:"+item["good_href"], callback=self.good_detail, meta={"item": deepcopy(item)} ) # 翻页 next_url = response.xpath("//a[@id='nextPage']/@href").extract_first() if next_url: yield scrapy.Request( next_url, callback=self.good_list, meta={"item": response.meta["item"]} ) def good_detail(self, response): item = response.meta["item"] # 获取当前商品的属性规格:颜色、版本、 size_list = response.xpath("//div[@id='J-TZM']/dl") for size in size_list: size_name = size.xpath("./dt/span/text()").extract_first() size_value = size.xpath("./dd/ul/li/@title").extract() item[size_name] = size_value print(item)
使用scrapy爬取suning的更多相关文章
- Scrapy爬取美女图片 (原创)
有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- scrapy爬取西刺网站ip
# scrapy爬取西刺网站ip # -*- coding: utf-8 -*- import scrapy from xici.items import XiciItem class Xicispi ...
- scrapy爬取豆瓣电影top250
# -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...
- scrapy爬取极客学院全部课程
# -*- coding: utf-8 -*- # scrapy爬取极客学院全部课程 import scrapy from pyquery import PyQuery as pq from jike ...
- scrapy爬取全部知乎用户信息
# -*- coding: utf-8 -*- # scrapy爬取全部知乎用户信息 # 1:是否遵守robbots_txt协议改为False # 2: 加入爬取所需的headers: user-ag ...
- Scrapy爬取Ajax(异步加载)网页实例——简书付费连载
这两天学习了Scrapy爬虫框架的基本使用,练习的例子爬取的都是传统的直接加载完网页的内容,就想试试爬取用Ajax技术加载的网页. 这里以简书里的优选连载网页为例分享一下我的爬取过程. 网址为: ht ...
- Scrapy爬取静态页面
Scrapy爬取静态页面 安装Scrapy框架: Scrapy是python下一个非常有用的一个爬虫框架 Pycharm下: 搜索Scrapy库添加进项目即可 终端下: #python2 sudo p ...
- 用scrapy爬取京东的数据
本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...
随机推荐
- noip 2012 Day2 T2 借教室
一.暴力简述 甩链接.jpeg 首先我们不难看出,这道题————并不是一道多难的题,因为显然,第一眼看题目时便很容易地想到暴力如何打:枚举每一种订单,然后针对每一种订单,对区间内的每一天进行修改(做减 ...
- Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
Bryce1010模板 http://codeforces.com/contest/1000/problem/E 题意: 给一个无向图,求图的最长直径. 思路:对无向图缩点以后,求图的最长直径 #in ...
- Reduce实现
Reduce实现 参考 第一版 Array.prototype.fakeReduce = function (fn, base) { // this 指向原数组 // 拷贝数据, 更改指针方向 var ...
- Git命令---递归克隆
git clone --recursive https://github.com/rbgirshick/fast-rcnn.git Git命令 --recursive 会递归克隆fast-rcnn项目 ...
- STM32HAL库学习之前言
HAL库:HAL 的全称是: Hardware Abstraction Layer (硬件抽象层) ,是ST最新推荐的库.包括基本库和扩展库(功能外展):三种编程模型(轮询.中断和 DMA) 灵活的回 ...
- MongoDB管理练习
一.索引 1.插入10W条数据 文档内容为:{name:zs-i,age:1} 2016-06-07T14:35:57.041+0800 I CONTROL [initandlisten] > ...
- Retrofit Upload multiple files and parameters
Retrofit 的介绍以及基本使用 这里不再说明. 关于多文件上传 以及上传文件的同时携带多个参数说明 网上涉及到的不是太多. 上一张帅图: 代码: apiService: /** params 参 ...
- 《Redis开发与运维》快速笔记(一)
1.前言&基本介绍 在原始的系统架构中,我们都由程序直接连接DB,随着业务的进一步开展,DB的压力越来越大,为了缓解DB的这一压力,我们引入了缓存,在程序连接DB中加入缓存层, 从而减轻数据库 ...
- 013、BOM对象的应用
BOM结构图如下: DOM结构图如下: BOM和DOM BOM,Bowser Object Model浏览器对象模型.提供了访问和操作浏览器各组件的途径或方法. 比如:Navigator对象:浏览器的 ...
- itop安装中使用nginx安装后不能出现enter itop的问题
安装中没有出现enter itop,  如下的网络请求给了我们原因 原来使用的是域名请求资源文件,而该域名并不能指向我的服务器,所以安装中资源文件请求不成功,查看了我的nginx配置,如下 [ro ...