使用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 环境 ...
随机推荐
- java实训 :异常(try-catch执行顺序与自定义异常)
关键字: try:执行可能产生异常的代码 catch:捕获异常 finally:无论是否发生异常代码总能执行 throws:声明方法可能要抛出的各种异常 throw:手动抛出自定义异常 用 try-c ...
- 洛谷 P1199 三国游戏
参考:Solution_ID:17 题解 更新时间: 2016-11-13 21:01 这道题要求最后得到的两方的默契值最大的武将,小涵的默契值大于计算机,首先,我们这个解法获胜的思路是,每个武将对应 ...
- 贪心+拓扑排序 AOJ 2456 Usoperanto
题目传送门 题意:给出一条链,比如x连到y,x一定要在y的左边,且代价是这条链经过的点的权值和,问如何排序使得代价最小 分析:类似拓扑排序,先把入度为0的点入队,把指向该点的所有点按照权值排序,保证这 ...
- Tomcat启动后打开页面提示404错误的解决
Eclipse配置并启动Tomcat成功,但有时会访问localhost:8080出现404错误,此时需要修改Tomcat配置.步骤如下: 在Eclipse中双击Tomcat server,打开Tom ...
- 常见的问题:https://localhost:1158/em 无法打开
常见的问题:https://localhost:1158/em 无法打开 安装了Oracle Database 11g,里面有个基于网页的管理工具“https://localhost:1158/em” ...
- 基于webmagic的爬虫小应用
以前没有写过爬虫程序,最近两天就研究了一下java的爬虫框架webmagic.然后写了一个demo 写爬虫的基本思想: 1.抓取目标连接 2.根据页面中标签,抓捕你需要的内容 3.保存结果集 以下是实 ...
- [转]ASP.NET MVC Bootstrap极速开发框架
本文转自:http://www.cnblogs.com/smartbooks/p/3814927.html 前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET ...
- 11.1Java-接口
一.接口 interface定义:固定格式 public abstract 返回值类型 方法名字(参数列表);代码: public interface AMyInterface { public ab ...
- ES-Apache Lucene
前言 在介绍Lucene之前,我们来了解相关的历史. 有必要了解的Apache Apache软件基金会(也就是Apache Software Foundation,简称为ASF)是专门为运作一个开源软 ...
- elasticsearch httpclient认证机制
最近公司单位搬迁,所有的服务都停止了,我负责的elasticsearch不知道怎么回事,一直不能运行呢,因此,我一直在负责调试工作.经过两天的调试工作,我发现新的服务器增加了httpclient认证机 ...