知识点:把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()

唯品会首页导航分类商品爬取相关推荐

  1. python爬虫电商京东_python爬虫-京东商品爬取

    京东商品爬取 仅供学习 一.使用selenium from selenium import webdriver from selenium.webdriver.common.keys import K ...

  2. Scrapy入门、当当网商品爬取实战

    文章目录 一.如何创建Scrapy爬虫项目 二.Scrapy的一些指令说明 三.当当网商品爬取实战 一.如何创建Scrapy爬虫项目 (1) Win+R 打开cmd,假如我要在F盘的Scrapy文件中 ...

  3. 3.3、苏宁百万级商品爬取 代码讲解 商品爬取

    接下去进入代码的模块,首先我们分析一下如何实现代码 我们拥有一张类别表,类别表中记录了 类别名称,编码,地址,该类别所拥有的页数等信息 类别表.png 抽象描述: 取出所有的类别 循环类别集合 循环类 ...

  4. python爬虫自学习1+京东商品爬取实例

    自学习笔记 序 安装第三方库 request 库 使用方法 实例爬取 HTML内容解析--Beautiful Soup 库 BeautifulSoup类的基本元素 基于bs4库的HTML内容遍历方法 ...

  5. 进阶4·淘宝商品爬取与分析(selenium,网页元素无法定位的四个解决办法)

    淘宝估计是爬虫界一直想要去尝试的网页,小彬自学爬虫已有一段时间,在掌握selenium后就一直想要本着学习交流的态度和淘宝程序员叔叔切磋一下,嘻嘻. 唉,没想到这一切磋就耗费了我一天时间,不过还好,最 ...

  6. springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索

    简介 SpringBoot + solr + webmagic 学习solr写的demo 1 概述 根据https://github.com/ameizi/solrj-example 改的,原项目是S ...

  7. 爬虫实战:淘宝商品爬取(附词云展示)

    选择的淘宝产品是olay官方旗舰店下的产品, 点击到评价页面之后,打开网页源代码,找到评论的链接如下所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201 ...

  8. Python爬虫:按分类批量爬取环球新闻

    动爪前,先看一下环球新闻网的robots.txt昂: 这个robots.txt: 你懂我的意思吧 -.- 搜索引擎检索我!客官要来爬一发吗? from lxml import etreeimport ...

  9. 淘宝 商品爬取并存到mysql

    新建爬虫项目    tb.py # -*- coding: utf-8 -*- import scrapy,json from taobao.items import TaobaoItem class ...

最新文章

  1. 逻辑回归实例--乳腺癌肿瘤预测
  2. STM32下载程序时的一个奇怪现象
  3. 【设计模式】责任链模式
  4. 【论文解读】ICLR 2021丨当梯度提升遇到图神经网络,“鱼和熊掌”皆可兼得
  5. 2021年中国计算机视觉人才调研开启啦,诚邀各位开发者们参与~
  6. 4.2 字符串简介
  7. vuex 在typescript中的写法
  8. 前端web 技术盘点
  9. Star UML指导手册
  10. 计算机组成原理试题,计算机组成原理试卷A卷.doc
  11. java建设银行支付_基于JAVA的建设银行账目管理系统的设计
  12. dataframe横向和纵向拼接
  13. 微信号开通检测软件的使用方法
  14. 计算机网络 - 传输层
  15. 什么是NURBS曲线
  16. spark入门案例以及sbt安装与打包(Linux环境)
  17. 幸存者游戏给出的12个启示(zz)
  18. 截取url中的ip(ipv4和ipv6)
  19. 整理*软件测试的方法一共有几种
  20. swift那些事儿 尾随闭包

热门文章

  1. 麻了,3个offer不知道选哪个?
  2. char arr[] 和 char *arr区别
  3. Linux注册tomcat为服务
  4. 阿里云slb配置https重定向后变为http
  5. 纪念正月十六工作室博客总访问量突破百万
  6. python手机安装模块_python 调用StringIO需要安装哪个模块?怎么安装?
  7. spotify mp3_我的乐高人仔玩spotify
  8. flutter wrap和chip
  9. 电阻,电容,电感这些知识你会了吗
  10. 解决MATLAB 重复激活问题