当前位置:
首页 > Python基础教程 >
-
python基础教程之使用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)
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式