需求分析
今天考试终于结束了,接下来就要迎来快乐的暑假了。虽然,今天确实没有小伙伴问我问题,但是想必暑假最重要的事情就是玩游戏啦!那么问题来了,有什么游戏可以玩呢?旧的游戏固然很好玩,但是谁不喜欢新的呢?于是,我决定通过爬虫程序,抓取新游戏的发售表
本次我们将寻找一个游戏发售表,从其新游列表中,获取到最新的游戏
页面分析
对于一个要发售的游戏,首先最重要的是知道游戏的发售时间和游戏的名字,所以这两项是一定要有的。另外游戏的类型也很重要,只是知道游戏名的话,有的时候我们不知道这是一种什么样的游戏。但是如果知道了游戏的类型,那么在很多时候,就可以知道这是不是我们喜欢玩的游戏种类了。例如说,如果我从来不玩养成游戏,那么我看到这个游戏类型不是我喜欢的,那么就可以考虑不关注了。因此,游戏类型也是很重要的
至于游戏的宣传图,详情简介等,如果我们对这个游戏有兴趣的话,可以自行通过搜索。了解到这个游戏的更多信息,因此这不是我们需要关注的重点内容。因此,本次爬取游戏的发售表,将主要考虑游戏名,游戏类型,和发售时间
实现分析
首先,还是一如既往的,通过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)
多数爬虫程序很快就会由于对方地址和服务变化导致失效,因此无法保证当你看到这篇文章时,文中的程序仍然可以使用。如果文中的程序已失效,需要自行或者求助他人进行重写
另外,切勿将爬虫程序用于非法用途,或者错误的滥用造成对方网站的负担,谢谢!