暑假玩什么游戏?通过爬虫程序爬取游戏发售表

需求分析

今天考试终于结束了,接下来就要迎来快乐的暑假了。虽然,今天确实没有小伙伴问我问题,但是想必暑假最重要的事情就是玩游戏啦!那么问题来了,有什么游戏可以玩呢?旧的游戏固然很好玩,但是谁不喜欢新的呢?于是,我决定通过爬虫程序,抓取新游戏的发售表

本次我们将寻找一个游戏发售表,从其新游列表中,获取到最新的游戏

页面分析

对于一个要发售的游戏,首先最重要的是知道游戏的发售时间和游戏的名字,所以这两项是一定要有的。另外游戏的类型也很重要,只是知道游戏名的话,有的时候我们不知道这是一种什么样的游戏。但是如果知道了游戏的类型,那么在很多时候,就可以知道这是不是我们喜欢玩的游戏种类了。例如说,如果我从来不玩养成游戏,那么我看到这个游戏类型不是我喜欢的,那么就可以考虑不关注了。因此,游戏类型也是很重要的

至于游戏的宣传图,详情简介等,如果我们对这个游戏有兴趣的话,可以自行通过搜索。了解到这个游戏的更多信息,因此这不是我们需要关注的重点内容。因此,本次爬取游戏的发售表,将主要考虑游戏名,游戏类型,和发售时间

实现分析

首先,还是一如既往的,通过requests库,发送请求

import requests

url = "xxx"

headers = {xxx}

# 标准的requests发起请求的方式
r = requests.get(url, headers=headers)

然后,使用xpath,从中提取数据

from lxml import etree

html = etree.HTML(r.text)

# 通过lxml,从响应中提取数据
text = html.xpath("//li[@class='lx1']")

之后,通过字符串拼接等方式,得到最终需要的数据

info += "游戏名:"
info += i.xpath(".//div[@class='tit']/a/text()")[0]
info += "\n"
info += "游戏类型:"
info += i.xpath(".//div[@class='txt'][2]/a/text()")[0]
info += "\n"

获得了所有的数据之后,需要获取下一页的链接,然后重复这一个过程

next_url = html.xpath("//a[text()='查看下一个月']/@href")[0]
r = requests.get(next_url, headers=headers)

注意:以上的所有代码,并非为完整的真实代码,而是去掉了复杂部分的简化后的代码,仅为演示整个程序的流程结构

完整代码演示

"""
程序名:pc游戏发售信息爬取
作者:sagegrass
联系方式:sagegrass@outlook.com
创建时间:2022-06-09
更新时间:2022-06-09
"""

import requests
import time
import base64

from lxml import etree

base_url = "aHR0cHM6Ly9rdS5nYW1lcnNreS5jb20vcmVsZWFzZS9wY18yMDIyMDEv"

url = base64.b64decode(base_url).decode()

headers = {"user-agent": "Mozilla/5.0"}

r = requests.get(url, headers=headers)

for i in range(12):
    html = etree.HTML(r.text)
    g = html.xpath("//li[@class='lx1']")
    for i in g:
        game_info = ""
        game_info += "游戏名:"
        game_info += i.xpath(".//div[@class='tit']/a/text()")[0]
        game_info += "\n"
        game_info += i.xpath(".//div[@class='txt'][1]/text()")[0]
        game_info += "\n"
        game_info += "游戏类型:"
        game_info += i.xpath(".//div[@class='txt'][2]/a/text()")[0]
        game_info += "\n"
        game_info += i.xpath(".//div[@class='txt'][3]/text()")[0]
        game_info += "\n"
        print(game_info)

    next_url = url + "../.." + html.xpath("//a[text()='查看下一个月']/@href")[0]
    r = requests.get(next_url, headers=headers)
    time.sleep(1)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值