唯品会首页导航分类商品爬取
知识点:把url地址通过get方法提交数据,用params构造出来,循环发送请求,面向对象编程,代码在最下面
今天给大家分享一个通过js加载数据的一个小案例,废话不多说,分析上代码
1 f12检查源码,清空所有信息,然后把鼠标放到列表上面滑动,请求信息就出来了,分析一下请求信息,第一个信息刚好有我们需要的以及主分类名称,id ,下面全是子分类详情信息
这个id我们要提取出来,在下面构造二级子分类参数要用
分析二级子菜单,找到所有数据
因为我们要通过get提交参数方法构造url,必须清楚需要哪些参数,第一个参数多余,存在的话json数据无法解析,第二个参数就是第一步所看到的商品id
**
思路都有了,直接上代码
**
1 定义数据采集类,init方法做类的初始化操作,构造headers参数,定义数据采集成功后存放哪个文件和文件位置
2 定义response_handler方法通过目标url构造请求响应构造
3 定义parse_Categroies方法解析主分类函数,拿到所有分类id,名称
4 定义sub_categroies方法解析二级菜单列表
5 定义crawl通过主函数传入的子二级分类菜单id,调用sub_categroies方法解析二级分类菜单
6 定义save方法将数据存储到指定文件中,定义close_spider方法在数据存储完成后关闭文件
7 定义main方法进行逻辑处理和方法调用
不要问我为什么这么绕,我也不知道,哈哈哈,代码可以直接运行
import requests
import json
import datetime
import osclass Crawl:def __init__(self):self.headers={'Referer': 'https://www.vip.com/','User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/ \537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}file_dir=os.getcwd()file_name='crawl3-%s-data3.json'%str(datetime.datetime.now().date())self.file_path=os.path.join(file_dir,file_name)self.fp=open(self.file_path,"w",encoding='utf-8')self.fp.write('[\n')print('初始化成功')def response_handler(self,url,data):print('开始构造响应')response=requests.get(url,params=data,headers=self.headers)print('响应构造成功')return responsedef parse_Categories(self,response):content=json.loads(response.text)datas=content['data']['category']categories = {}for data in datas:categories[data['cate_name']]=data['cate_id']return categoriesdef sub_categories(self,response,category_id):content=json.loads(response.text)item={}datas=content['data'][str(category_id)][0]['children']for data in datas:sub_category_list=[]sub_category=data['cate_name']for goods in data['children']:good=goods['cate_name']sub_category_list.append(good)item[sub_category]=sub_category_listreturn itemdef crawl(self,category_id):url='https://category.vip.com/ajax/getTreeList.php?'data={'cid': category_id,'tree_id': '117','_': '1553128892132'}response=self.response_handler(url,data)sub_category=self.sub_categories(response,category_id)return sub_categorydef save(self,item):data=json.dumps(item,ensure_ascii=False)print("正在保存数据%s"%data)self.fp.write(data+",\n")def close_spider(self):self.fp.write('\n]')self.fp.close()print('数据采集完成,存储在%s'%self.file_path)def main(self):url='https://category.vip.com/ajax/getSellingCategory.php?'data={'tree_id': '117','_': '1553128892131'}Categories_res=self.response_handler(url,data)Categories=self.parse_Categories(Categories_res)for category in Categories.keys():item=self.crawl(Categories[category])item['category']=categoryself.save(item)self.close_spider()if __name__ == '__main__':c=Crawl()c.main()
唯品会首页导航分类商品爬取相关推荐
- python爬虫电商京东_python爬虫-京东商品爬取
京东商品爬取 仅供学习 一.使用selenium from selenium import webdriver from selenium.webdriver.common.keys import K ...
- Scrapy入门、当当网商品爬取实战
文章目录 一.如何创建Scrapy爬虫项目 二.Scrapy的一些指令说明 三.当当网商品爬取实战 一.如何创建Scrapy爬虫项目 (1) Win+R 打开cmd,假如我要在F盘的Scrapy文件中 ...
- 3.3、苏宁百万级商品爬取 代码讲解 商品爬取
接下去进入代码的模块,首先我们分析一下如何实现代码 我们拥有一张类别表,类别表中记录了 类别名称,编码,地址,该类别所拥有的页数等信息 类别表.png 抽象描述: 取出所有的类别 循环类别集合 循环类 ...
- python爬虫自学习1+京东商品爬取实例
自学习笔记 序 安装第三方库 request 库 使用方法 实例爬取 HTML内容解析--Beautiful Soup 库 BeautifulSoup类的基本元素 基于bs4库的HTML内容遍历方法 ...
- 进阶4·淘宝商品爬取与分析(selenium,网页元素无法定位的四个解决办法)
淘宝估计是爬虫界一直想要去尝试的网页,小彬自学爬虫已有一段时间,在掌握selenium后就一直想要本着学习交流的态度和淘宝程序员叔叔切磋一下,嘻嘻. 唉,没想到这一切磋就耗费了我一天时间,不过还好,最 ...
- springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索
简介 SpringBoot + solr + webmagic 学习solr写的demo 1 概述 根据https://github.com/ameizi/solrj-example 改的,原项目是S ...
- 爬虫实战:淘宝商品爬取(附词云展示)
选择的淘宝产品是olay官方旗舰店下的产品, 点击到评价页面之后,打开网页源代码,找到评论的链接如下所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201 ...
- Python爬虫:按分类批量爬取环球新闻
动爪前,先看一下环球新闻网的robots.txt昂: 这个robots.txt: 你懂我的意思吧 -.- 搜索引擎检索我!客官要来爬一发吗? from lxml import etreeimport ...
- 淘宝 商品爬取并存到mysql
新建爬虫项目 tb.py # -*- coding: utf-8 -*- import scrapy,json from taobao.items import TaobaoItem class ...
最新文章
- 逻辑回归实例--乳腺癌肿瘤预测
- STM32下载程序时的一个奇怪现象
- 【设计模式】责任链模式
- 【论文解读】ICLR 2021丨当梯度提升遇到图神经网络,“鱼和熊掌”皆可兼得
- 2021年中国计算机视觉人才调研开启啦,诚邀各位开发者们参与~
- 4.2 字符串简介
- vuex 在typescript中的写法
- 前端web 技术盘点
- Star UML指导手册
- 计算机组成原理试题,计算机组成原理试卷A卷.doc
- java建设银行支付_基于JAVA的建设银行账目管理系统的设计
- dataframe横向和纵向拼接
- 微信号开通检测软件的使用方法
- 计算机网络 - 传输层
- 什么是NURBS曲线
- spark入门案例以及sbt安装与打包(Linux环境)
- 幸存者游戏给出的12个启示(zz)
- 截取url中的ip(ipv4和ipv6)
- 整理*软件测试的方法一共有几种
- swift那些事儿 尾随闭包