这次用了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热销商品数据相关推荐

  1. Python爬取京东任意商品数据实战总结

    利用Python爬取京东任意商品数据 今天给大家展示爬取京东商品数据 首先呢还是要分思路的,我分为以下几个步骤: 第一步:得到搜索指定商的url 第二步:获得搜索商品列表信息 第三步:对得到的商品数据 ...

  2. BeautifulSoup爬取智联招聘数据

    BeautifulSoup爬取智联招聘数据 警告: 此项技术仅适用于练习,限制大量大规模爬取,在爬取中使用了个人cookie,请注意不要随意泄露,内含个人隐私信息! 如果过分爬取,会造成ip被封! 1 ...

  3. 爬取电商平台数据,python爬取某维商品数据

    本次内容: 爬取电商平台数据,python爬取某维商品数据 课程亮点 动态数据抓包演示 json数据解析 requests模块的使用 保存csv 环境介绍 python 3.8 [最好用和老师一样的版 ...

  4. Python爬虫实战:爬取steam打折优惠数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于云+社区,作者 Elapse 转载地址 https://bl ...

  5. 程序员爬取 5000+ 口红商品数据,差点比女朋友更懂口红?

    作者 | YaJie 来源 | Giao数据 责编 | 王晓曼 摘要:本文以"口红"为关键字,爬取了[1]淘宝与天猫官网下100页口红数据,经过去重,得到共计4353条口红商品信息 ...

  6. python爬虫数据分析项目 双十一_Python爬取淘宝商品数据,价值千元的爬虫外包项目!...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链 ...

  7. Python实战案例分享:爬取当当网商品数据

    ​​作者:韦玮 转载请注明出处 目前,网络爬虫应用领域非常广,在搜索引擎.大数据分析.客户挖掘中均可以用到.在本篇博文中,韦玮老师会以当当网爬虫为例,为大家讲解如何编写一个自动爬虫将当当网的商品数据都 ...

  8. 基于Scarpy爬取Shopee网站商品数据

    一.实现的主要功能: 1.基于Scarpy框架爬取Shopee网站马来西亚站点商品数据,包括商品url,最低价.最高价.销量.商品图片url.店铺名称.店铺开通时间: 2.针对反爬,获取免费ip代理网 ...

  9. 爬虫--selenium爬取淘宝商品数据

    # 导入包 from selenium import webdriver # 连接驱动器,这里用的是谷歌,版本必须对应 driver = webdriver.Chrome(executable_pat ...

最新文章

  1. Unity 4.x 2D游戏开发基础教程大学霸第一更
  2. Python Elasticsearch 插入数据
  3. 阿里技术 2019 年度热文 Top10 出炉,你错过哪些?
  4. 动人配乐是如何炼成的?带您了解《花之灵》背景原声的幕后制作秘辛
  5. 指定rviz的点启动_好消息!武汉已经启动新冠疫苗紧急接种工作
  6. 关于工作的选择之软件开发还是软件维护的建议
  7. C++空间分配器简述学习笔记
  8. 准备拉琴的zskame大白菜
  9. linux 拷机软件,拷机软件跑起来,OS X平台下OpenGL初体验
  10. shell正则表与文本工具sed
  11. Java中的项目的导入导出
  12. 预测大盘最准确的指标_通达信大盘预测指标,通达信副图指标,需要写一个关于大盘每日成交量的指标高手请进啊...
  13. vb mysql 实例_VB与数据库的交互经典例子总结
  14. 量子力学对计算机影响,人们对量子力学的理解有误?
  15. Juniper交换机配置命令_学习笔记
  16. 回顾备忘—Android系统hal层相关系统粗概
  17. SQLMAP使用教程(一)
  18. 小白记录——识别RNA编辑位点
  19. JSON.parse解析字符串报错-SyntaxError: Unexpected token ‘ in JSON at position 报错 并捕获该异常操作
  20. 电子技术综合实训考核装置

热门文章

  1. D/A转换器(DAC)
  2. Python基础语法七:元组字典和集合
  3. matlab中simple函数怎么用,matlab里simple函数
  4. 在电脑上限制他人网速--需要同一个区域网
  5. 海思Hi3518Ev200 4G wifi无线网络视频监控摄像开发板可二次开发
  6. Tik Tok直播:如何做好TikTok直播?
  7. POJ 1511:Invitation Cards
  8. 计算机软件的专利保护
  9. Linux 目录管理类命令
  10. 概率——2016青岛icpc区域赛 C - Pocky HDU - 5984 公式推导