需求分析

上周,我发布了通过scrapy爬取游戏发售信息,但是呢,很快一个小伙伴就联系我说,“仙草哥哥,虽然新游戏很好,但是如果原价购买这些游戏的话,太贵了。能不能做一个游戏折扣信息的爬取呢?”

游戏折扣信息的爬取,这也不是难事情啦,每次通过一样的方式,就可以实现了!即使你不会python和爬虫也不要紧,只要看看我以前的实现,照着进行简单的修改,就可以完成任务了

首先,很确定的是,还是通过requests发起请求,通过lxml处理,最后打印或者保存即可

为什么要通过requests发起请求呢,因为这是一种非常简单的发起请求的方式

那么为什么要通过lxml处理呢,为什么不用正则表达式,或者是字符串处理的函数呢?因为如果解析的是一个标准的,规范的html文本的话,通过lxml进行xpath的解析,是非常容易的一件事情。如果通过正则表达式解析的话,会比较麻烦和繁琐。因此,在爬虫的程序中,最简单的方式,我认为就是通过lxml进行解析

因此,每次只要通过同样的方法,实现一个requests和lxml的程序,就可以完成任务了,非常简单又很轻松

实现分析

首先,要通过requests发起请求

url = "游戏地址"r = requests.get(url)

不过与平常不同的是,由于steam游戏网站的性能问题,想要访问到该网站不是很稳定,因此不能像平常一样,只进行一次的请求,必须要多进行几次请求,以及进行异常的处理。如果一次请求不能成功得到响应的话,那么就要多请求几次

try:r = requests.get(url)
except:r = requests.get(url)

当然,如果这样的话,只能进行一次重复的请求,不是很好,应该通过循环多进行几次请求

# 注意:这样的写法是错误的
# 不能把continue写在这里
try:while True:r = requests.get(url)
except:continue

循环可以放在异常处理的外边,这样就可以在同一个循环中完成continue了

while True:try:r = requests.get(url)breakelse:continue

为什么这样写是可以的呢,因为requests.get()这一步是可能抛出异常的,而break这一步一定不可能抛出异常,所以如果requests.get()这一步没有抛出异常,那么一定可以正常的执行到break,所以这一段内容是正确的

然后,就应该通过lxml对内容进行解析了

div = html.xpath("//div[@class='responsive_search_name_combined']")for i in div:title = i.xpath(".//span[@class='title']/text()")[0]text += "游戏名:"text += titlediscount = i.xpath(".//div[@class='col search_discount responsive_secondrow']/span/text()")[0]text += "折扣:"text += discountprice = i.xpath(".//div[@class='col search_price discounted responsive_secondrow']/span/strike/text()")[0]text += "原价:"text += pricenew_price = i.xpath(".//div[@class='col search_price discounted responsive_secondrow']/text()")[1]text += "现价:"text += new_price

这样解析完成之后,就可以得到我们需要的全部内容了。其实总结起来不外乎两步,requests请求,lxml解析。只要学会了这两个点,就能很好的完成爬虫程序了

完整代码展示

import requests
import base64
from lxml import etreebase_url = "aHR0cHM6Ly9zdG9yZS5zdGVhbXBvd2VyZWQuY29tL3NlYXJjaC8/c3BlY2lhbHM9MQ=="
url = base64.b64decode(base_url).decode()headers = {"user-agent": "Mozilla/5.0"}for i in range(10):try:r = requests.get(url, headers=headers, timeout=8)breakexcept:print("网络连接不太好,请等待...")if i == 9:print("网络连接失败,程序已终止...")raisecontinuehtml = etree.HTML(r.text)div = html.xpath("//div[@class='responsive_search_name_combined']")text = ""for i in div:title = i.xpath(".//span[@class='title']/text()")[0]if not len(i.xpath(".//div[@class='col search_discount responsive_secondrow']/span/text()")):continuetext += "游戏名:"text += titletext += "\n"discount = i.xpath(".//div[@class='col search_discount responsive_secondrow']/span/text()")[0]text += "折扣:"text += discounttext += "\n"price = i.xpath(".//div[@class='col search_price discounted responsive_secondrow']/span/strike/text()")[0]text += "原价:"text += pricetext += "\n"new_price = i.xpath(".//div[@class='col search_price discounted responsive_secondrow']/text()")[1]text += "现价:"text += new_pricetext += "\n"text += "\n"print(text)

运行效果展示

从这里,我们就可以看出目前gta5,巫师3狂猎,以及赛博朋克2077都在打折优惠了。而且幅度力度都很大,在半价以上。有了这样的程序,妈妈再也不用担心我错过优惠活动啦


多数爬虫程序很快就会由于对方地址和服务变化导致失效,因此无法保证当你看到这篇文章时,文中的程序仍然可以使用。如果文中的程序已失效,需要自行或者求助他人进行重写

另外,切勿将爬虫程序用于非法用途,或者错误的滥用造成对方网站的负担,谢谢!

原价游戏太贵?爬取steam游戏优惠信息相关推荐

  1. 英文名看不懂?爬取steam游戏中文优惠信息

    需求分析 昨天,我发布了爬取steam游戏优惠信息的程序,可是呢,很快啊,有一个年轻人找到我说,"仙老师,你这个程序我用了,有问题!" 我立刻问到,"发生甚么事了,我说这 ...

  2. 基于steam的游戏销量预测 — PART 1 — 爬取steam游戏相关数据的爬虫

    语言:python 环境:ubuntu 爬取内容:steam游戏标签,评论,以及在 steamspy 爬取对应游戏的销量 使用相关:urllib,lxml,selenium,chrome 解释: 流程 ...

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

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

  4. 爬取steam上热门游戏的价格,网址,评价数据

    我学爬虫是始于装叉,但是装叉动力不够,老师大作业要我们学,无奈,这里试着用python爬取steam动态网页的数据,挺简单的 # -*- coding: utf-8 -*- # @Author:胡澳治 ...

  5. python爬取steam250游戏详细信息和下载游戏介绍视频

    爬取网页地址 https://steam250.com/2020 网页详情 爬取的信息 游戏名称 游戏图片地址 游戏发行日期 游戏分类 游戏评分 游戏描述 游戏介绍视频 这里游戏描述需要点击单个游戏介 ...

  6. 爬取微博游戏名人信息

    爬取微博游戏名人信息 昨天写了关于静态网站爬取爬取的文章,以为自己无所不能了,想去微博上爬点数据,差点被微博吊起来打,遇到了太多的坑了,做下记录 常规步骤 我们爬取的网址是爬取网址 我们需要爬取游戏名 ...

  7. 爬取虎牙游戏主播人气分析实战

    爬取虎牙游戏主播人气分析实战: 在写的时候遇得了几个坑,然后又填上了: 第一个是: 开头我想爬取主播人气:但是找不到 div 只找到 span 遇到下一个</span>就结束了 无奈只能找 ...

  8. 超简单,Python爬取阴阳师游戏原声

    Python爬取阴阳师游戏BGM,附完整代码 爬取阴阳师游戏原声 网页分析 教程开始 1 请求json文件并获取数据 2 保存文件 注意,一定要看 结语 完整源码 目标网址:https://yys.1 ...

  9. 超细致通用,python爬取豆瓣游戏短评——以王者荣耀评论为例

    超细致通用,爬取豆瓣游戏短评--以王者荣耀评论为例 写在前面 一.介绍 二.步骤 1.观察 1.1网页结构 1.2网页层次逻辑 2.准备 2.1引入库 2.2获取html文件并且解析 3.选取 3.1 ...

  10. Python3 + BeautifulSoup 爬取Steam热销商品数据

    这次用了BeautifulSoup库来爬取Steam的热销商品,BeautifulSoup更侧重的是从页面的结构解析, 根据标签元素等来爬取数据,这次遇到两个问题: 1.Steam热销商品列表经常有重 ...

最新文章

  1. 台式电脑可以练计算机二级嘛6,练习六-计算机二级考试OFFICE高级应用试卷与试题.pdf...
  2. android aidl文件分析
  3. MyBatis ofType和javaType区别
  4. .Net CLR 中的同步机制(一): 互斥体
  5. PAT甲级题目翻译+答案 AcWing(链表)
  6. python2.7升级到python3.6注意事项
  7. (新聞) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球
  8. 如何使用 Lucene 做网站高亮搜索功能?
  9. 在SharePoint 2010中创建联系人Web数据库网站
  10. Sogou input method on Ubuntu
  11. c盘java文件误删_C盘的文件被误删如何恢复
  12. 无法启动此程序 因为计算机中丢失hypertrm.dll,开机弹出找不到HYPERTRM.dll
  13. Chrome 启动页面被114篡改的修复
  14. 华为路由器:AR真机忘记Console口密码的处理方法全过程演示
  15. SL-积雪效果(hitTest)雪人(snowman)
  16. 使用python 怎么下单炒股票?
  17. Chrome下图片加载的问题
  18. 英语 译林 2019 单词表
  19. Hexo系列matery主题踩坑优化记录
  20. Linux服务器NTP客户端时钟同步配置方法

热门文章

  1. 矩阵求逆的一万种方法
  2. 怎样把两个excel表格合并
  3. 华为智慧屏和荣耀智慧屏究竟有什么区别?
  4. ★ Android 各类依赖库文件 收藏 ★
  5. java中判断指定日期是星期几
  6. Win10红警如何关闭3d加速?
  7. 大学生学剪辑蒙太奇技巧怎么用?
  8. 2018.10.27 bzoj1984: 月下“毛景树”(树链剖分)
  9. python回合制游戏教程_3. Molten从零开始做独立游戏-python学习
  10. 计算机发表sci论文,sci2区计算机论文容易发表吗?