大数据先导实践实验一
实验一:大数据的爬取与清洗
实验内容:
从京东商城爬取笔记本电脑(也可自选其他商品)
https://list.jd.com/list.html?cat=670%2C671%2C672
货物信息,须包括商品价格p-price、商家p-shop、商品编号data-sku、商品图片(下图所示)可适当添加其他商品信息,至少爬取五页商品信息,将除图片以外的信息进行输出后存储于txt文件或excel文件中。
实验过程
首先需要了解python和HTML 的基本语法,对网页结构进行分析,然后使用python进行爬取
先安装Requests和BeautifulSoup拓展包
requests用来进行请求,BeautifulSoup用来进行对数据的清洗
使用requests.get()进行请求,respose为返回的结果
respose = requests.get(local_url, headers=headers)
一开始使用的时候并没有添加headers属性,返回为空结果,在查找资料后发现我们一般写的爬虫会默认向服务器发送爬取请求,而一般情况下网站是不允许被爬虫访问的,输出的text信息中会出现抱歉,无法访问等字眼。**我们通过更改User-Agent字段则可以实现网站请求,实现网页应答。**检查网页后添加属性
headers = {'user-agent': "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36"}
分析后续页面的页面地址
发现拼接page和s参数进行请求,所以在本地对后续的请求地址进行处理
if page != 1:local_url = local_url + '&page=' + str(page) + '&s=' + str(size) + '&click=0'
拿到响应的数据之后,先通过对网页结构的分析发现所有的需要的查找的元素都包含在类名为gl-item的li元素下
所以查找所有的类名为gl-item的li元素,在进行保存
li = bf.find_all('li', class_='gl-item')
遍历li元素,并创建局部变量data进行数据的保存,然后对实验要求的每个数据进行分析网页结构,进行清洗
for item in li:data = {}id = item.get('data-sku')name = item.find_all('div', class_='p-name')shop = item.find_all('div', class_='p-shop')price = item.find_all('div', class_='p-price')price = price[0].find_all('i')temp_shop = shop[0].find_all('span', class_='J_im_icon')
在处理的过程中发现会出现爬取不到商家信息的情况出现,所以还需要对爬取不到的情况进行处理
if len(temp_shop) == 0:data['shop'] = "商家信息有误!"else:data['shop'] = temp_shop[0].text
图片爬取的是它的地址,之后处理商品名字,因为有的商品名字前会出现京品电脑的字样,所以需要进行处理
name = name[0].find_all('em') if (name[0].text[0:4] == "京品电脑"):data['name'] = name[0].text[6:] else:data['name'] = name[0].text
打印商品信息,并将其添加到dataList数组中进行存储
data['id'] = iddata['price'] = price[0].textdata['img'] = imgprint('number:', data['id'])print('name', data['name'])print('price', data['price'])print('shop', data['shop'])dataList.append(data)
将其封装为getdata函数,在主函数中进行调用
if __name__ == '__main__':url = 'https://list.jd.com/list.html?cat=670%2C671%2C672'page = int(input("请输入需要爬取的页数:"))for i in range(1, page + 1):getdata(url, i, 30)
将爬取到的数据存入txt文件中,并添加换行符方便查看
f = open('com.txt', 'w')for line in dataList:f.write(str(line))f.write('\n')f.close()print("保存完毕")
运行结果
大数据先导实践实验一相关推荐
- 大数据先导实践实验二
实验二:大数据的处理 实验内容: 在本次实验中,请在k-mean算法.DBSCAN算法中选择任意一种算法完成聚类任务,并对于聚类结果实现可视化. 实验总体流程: (1)完成对于pathbased.sp ...
- 专题导读:大数据创新实践
专题:大数据创新实践 导读: 近几年,在各类学术期刊中,关于大数据先进理念.关键技术和核心算法的讨论越来越多."阵法"越来越复杂,"刀剑"越来越锋利,但是对于怎 ...
- 大数据课程综合实验案例:网站用户行为分析
大数据课程综合实验案例 1 案例简介 1.1 案例目的 1.2 适用对象 1.3 时间安排 1.4 预备知识 1.5 硬件要求 1.6 软件工具 1.7 数据集 1.8 案例任务 1.9 实验步骤 2 ...
- 东网科技荣膺2016中国大数据最佳实践奖
11月24日,由中国软件网主办的数据趴活动圆满落幕,活动现场隆重揭晓了大数据领域的重磅榜单,旨在对大数据领域中表现突出的企业.人物进行表彰.东网科技有限公司(以下简称"东网科技") ...
- 混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践
摘要:2019杭州云栖大会大数据企业级服务专场,由斗鱼大数据高级专家张龙带来以 "混合云模式下 MaxCompute+Hadoop 混搭大数据架构实践" 为题的演讲.本文讲述了从 ...
- 【2016年第3期】中国电信大数据应用实践
张宇中,李名洋 中国电信股份有限公司云计算分公司 中图分类号:TP 399 文献标识码: A doi: 10.11959/j.issn.2096-0271. 2016036 引用格式:张宇 ...
- 傅一平:运营商的大数据变现实践
3月29日,由东湖大数据发起.数据观作为合作媒体参与的大数据百人会·线上沙龙第9期活动圆满结束,浙江移动大数据中心傅一平博士就<运营商大数据变现实践>主题与大家分享了数据利用的心得与经验, ...
- 大数据技术基础实验十三:Kafka实验——订阅推送示例
大数据技术基础实验十三:Kafka实验--订阅推送示例 文章目录 大数据技术基础实验十三:Kafka实验--订阅推送示例 一.前言 二.实验目的 三.实验要求 四.实验原理 1.Kafka简介 2.K ...
- 大数据风控实践 - 反欺诈之设备指纹
很多人看见指纹两个字,认为是有特定的设备仪器来采集,类似人的指纹. 设备指纹里的指纹换成ID(唯一标识)更合适. 强ID-手机出厂/使用自带的唯一标识 设备指纹-弱特征生成唯一标识 设备指纹生成 在g ...
最新文章
- AngularJs学习笔记--unit-testing
- 速看 | 电子元器件如何确定好坏?
- 树形结构 —— 树与二叉树 —— 树的重心
- 免费的东东真给力:轻松实现代码变更与缺陷,任务和需求的紧密关联.
- [jQuery]Great Ways to Learn jQuery
- ELK收集docker日志
- python的模块(module)和包(package)
- PLSQL Developer 12 64位下载 v12.0.4汉化中文版
- 记录如何卸载 Adobe 应用【Adobe Creative Cloud Cleaner Tool使用】
- 幸运红包娱乐微信小程序源码下载-多玩法安装简单
- 怎么把图片转换成表格?这三种办法值得收藏
- 格式工厂 wav 比特率_这可能是 Mac 上最强格式转换工具
- 功能测试的类型之用户验收测试
- 多线程设计模式——Master-Salave(主仆)模式
- 区块链技术具体要用到什么开发语言?
- 个人家用nas_家庭私有云盘系列教程-本地搭建家庭NAS方案
- java基础 第一章 对象入门
- isPrime 判断素数的函数
- linux mtr 普通用户执行,Linux网站打开慢之mtr工具探测分析
- 北海康成上市首日破发,药明生物等基石投资人合计亏损1.26亿港元