Python3 + BeautifulSoup 爬取Steam热销商品数据
这次用了BeautifulSoup库来爬取Steam的热销商品,BeautifulSoup更侧重的是从页面的结构解析,
根据标签元素等来爬取数据,这次遇到两个问题:
1.Steam热销商品列表经常有重复的,所以我建了一个列表,把爬到的数据存进去,每次爬的时候都校验跟列表里有没有重复,有的话就跳过,防止重复爬取。
2.我需要同时遍历两个表,找到了zip()函数解决方案,下面简单介绍一下。
zip()
大家看下面的实例应该就能明白。
xs = ['我是','你是','他是']
ys = ['第一','第二','第三']for x, y in zip(xs,ys):print(x+y)
输出结果如下:
我是第一
你是第二
他是第三
下面是完整爬虫代码,使用的库请自行安装不另做教学:
from bs4 import BeautifulSoup
import xlwt,os,time,requestspage = 1 #起始页数
total_pages = 3 #总页数,爬10页请设定为11
count = 1 #每抓到一次游戏名称增加一次,用来排序
pool=[] #每次抓到的游戏名称都会放进pool列表里,用来去重
document = 'Steam_GameTopSellers' #设定爬取的数据存的excel的档案名称
wb = xlwt.Workbook() #创建excel
ws = wb.add_sheet("TopSellers") #在excel新增一个sheet页
ws.write(0,0,'#')#三个参数,1:第几行,2:第几列,3:输入什么值
ws.write(0,1,'Game Title') #在excel第一行第二列先行写入'Game Title'
ws.write(0,2,'Released Date') #在excel第一行第三列先行写入'Released Date'
root = os.getcwd() #获取当前工作路径
date = time.strftime('%Y%m%d',time.localtime(time.time())) #获取当前日期 格式为yyyymmddwhile page<total_pages:url = 'https://store.steampowered.com/search/?tags=597&filter=topsellers&page=%s' % str(page) #设定url,变量控制页数r = requests.session()res = r.get(url).textsoup = BeautifulSoup(res,"html.parser")game_names = soup.find_all('span',attrs={'class':'title'}) # 遍历所有span标签,且class属性值为'title' 即当前页面所有游戏名称released_dates = soup.find_all('div',attrs={'class':'col search_released responsive_secondrow'}) #当前页面所有发行日期for game_name, released_date in zip(game_names,released_dates): #同时遍历连个列表的方法 for x,y in zip(xs,ys):if game_name.string in pool: #如果爬到的数据在我的pool列表里存在的话就跳过,反之继续爬continueelse:print('%s .GameName:%s Released on:%s' % (count,game_name.string,released_date.string)) #打印给自己看的pool.append(game_name.string) #把爬到的数据增加到pool列表里ws.write(count,0,count) #往excel写入编号ws.write(count,1,game_name.string) #往excel写入游戏名称ws.write(count,2,released_date.string) #往excel写入发行日期count += 1 #每遍历一次 count 变量 +1 ,用来排序写入excel里的顺序rate = page / (total_pages - 1)print('--------------------------第%s页爬取完成--------------------已完成: %.2f%%' % (str(page),(rate * 100)))page += 1wb.save('%s%s.xls' % (document,date)) #保存excel
print('--------------------------爬取完成--------------------------')
print('所有数据已存至:%s\%s%s.xls' % (root,document,date))
爬取结果(一共爬取1242条数据,51页~60页都是重复的):
结语:
这steam真是。。。后十页就是重复的,我一开始以为是有什么防爬机制,
后来在实际页面检查确实有重复的情况。
Python3 + BeautifulSoup 爬取Steam热销商品数据相关推荐
- Python爬取京东任意商品数据实战总结
利用Python爬取京东任意商品数据 今天给大家展示爬取京东商品数据 首先呢还是要分思路的,我分为以下几个步骤: 第一步:得到搜索指定商的url 第二步:获得搜索商品列表信息 第三步:对得到的商品数据 ...
- BeautifulSoup爬取智联招聘数据
BeautifulSoup爬取智联招聘数据 警告: 此项技术仅适用于练习,限制大量大规模爬取,在爬取中使用了个人cookie,请注意不要随意泄露,内含个人隐私信息! 如果过分爬取,会造成ip被封! 1 ...
- 爬取电商平台数据,python爬取某维商品数据
本次内容: 爬取电商平台数据,python爬取某维商品数据 课程亮点 动态数据抓包演示 json数据解析 requests模块的使用 保存csv 环境介绍 python 3.8 [最好用和老师一样的版 ...
- Python爬虫实战:爬取steam打折优惠数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于云+社区,作者 Elapse 转载地址 https://bl ...
- 程序员爬取 5000+ 口红商品数据,差点比女朋友更懂口红?
作者 | YaJie 来源 | Giao数据 责编 | 王晓曼 摘要:本文以"口红"为关键字,爬取了[1]淘宝与天猫官网下100页口红数据,经过去重,得到共计4353条口红商品信息 ...
- python爬虫数据分析项目 双十一_Python爬取淘宝商品数据,价值千元的爬虫外包项目!...
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链 ...
- Python实战案例分享:爬取当当网商品数据
作者:韦玮 转载请注明出处 目前,网络爬虫应用领域非常广,在搜索引擎.大数据分析.客户挖掘中均可以用到.在本篇博文中,韦玮老师会以当当网爬虫为例,为大家讲解如何编写一个自动爬虫将当当网的商品数据都 ...
- 基于Scarpy爬取Shopee网站商品数据
一.实现的主要功能: 1.基于Scarpy框架爬取Shopee网站马来西亚站点商品数据,包括商品url,最低价.最高价.销量.商品图片url.店铺名称.店铺开通时间: 2.针对反爬,获取免费ip代理网 ...
- 爬虫--selenium爬取淘宝商品数据
# 导入包 from selenium import webdriver # 连接驱动器,这里用的是谷歌,版本必须对应 driver = webdriver.Chrome(executable_pat ...
最新文章
- Unity 4.x 2D游戏开发基础教程大学霸第一更
- Python Elasticsearch 插入数据
- 阿里技术 2019 年度热文 Top10 出炉,你错过哪些?
- 动人配乐是如何炼成的?带您了解《花之灵》背景原声的幕后制作秘辛
- 指定rviz的点启动_好消息!武汉已经启动新冠疫苗紧急接种工作
- 关于工作的选择之软件开发还是软件维护的建议
- C++空间分配器简述学习笔记
- 准备拉琴的zskame大白菜
- linux 拷机软件,拷机软件跑起来,OS X平台下OpenGL初体验
- shell正则表与文本工具sed
- Java中的项目的导入导出
- 预测大盘最准确的指标_通达信大盘预测指标,通达信副图指标,需要写一个关于大盘每日成交量的指标高手请进啊...
- vb mysql 实例_VB与数据库的交互经典例子总结
- 量子力学对计算机影响,人们对量子力学的理解有误?
- Juniper交换机配置命令_学习笔记
- 回顾备忘—Android系统hal层相关系统粗概
- SQLMAP使用教程(一)
- 小白记录——识别RNA编辑位点
- JSON.parse解析字符串报错-SyntaxError: Unexpected token ‘ in JSON at position 报错 并捕获该异常操作
- 电子技术综合实训考核装置