python 游戏大作_使用requests和beautifulsoup爬取3DM单机大作排行榜
支持正版,从我做起!
最近发售的游戏不少,刚好又在学习爬虫,于是就灵光一闪去3DM爬了个单机大作排行榜TOP200,过程代码结果如下。
首先,我们需要知道我们要爬取哪些信息,看到排行榜里的游戏项可以确定有名字、发售日期、评分和网址还有其他一些描述信息这五项内容。
打开Chrome开发者工具,找到五项信息对应的标签,可以发现发售日期和其他一些信息都包含在一个
- 表格中,可以将发售日期单独提取出来作为一项数据。
然后分析一下单机大作列表的url,发现页码和zq有关,zq_a就是第a页,而第一页zq和zq_1显示的是一个页面,而每个页面包含20个游戏信息(让我们忽略第一个真-3DM大作),爬取前10页得到TOP210的游戏信息。
接下来就是代码的编写,代码分为数据的爬取与清洗和数据的入库两个基本函数,非常简单。
import requests
import pymongo
import csv
import xlwt
from bs4 import BeautifulSoup
base_url = 'https://www.3dmgame.com/games/zq_'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/85.0.4181.9 Safari/537.36'
}
proxies = {}
# 爬取游戏排行榜
def game_spider():
games = []
for i in range(1, 11):
url = base_url + str(i) + '/'
response = requests.get(url, headers=headers, proxies=proxies)
if response:
page_source = response.text
result = BeautifulSoup(page_source, 'html.parser')
# 游戏名
game_names = result.find_all('a', class_='bt')
game_urls = []
# 游戏链接, 提取游戏名标签的href属性即可
for game_name in game_names:
game_url = game_name['href']
game_urls.append(game_url)
# 发售日期
game_lis = result.find_all('li')
game_dates = []
for game_li in game_lis:
if "发售:" in game_li.text:
game_date = game_li.text.replace('发售:', '').replace(' ', '')
game_dates.append(game_date)
# 其他信息
game_infos = result.find_all('ul', class_='info')
# 评分
game_ranks = result.find_all('div', class_='scorewrap')
for j in range(0, len(game_names)):
game_name = game_names[j].text.replace('\n', '').replace(' ', '')
game_info = game_infos[j].text.replace('\n', '').replace(' ', '')
game_rank = game_ranks[j].text.replace('\n', '').replace(' ', '')
game_data = {'game_name': game_name, 'game_date': game_dates[j], 'game_info': game_info, 'game_rank': \
game_rank, 'game_url': game_urls[j]}
if game_data['game_name'] != '斗罗大陆3D':
games.append(game_data)
return games
def save_csv(games):
csvfile = open('games.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(csvfile)
writer.writerow(['游戏名', '发售日期', '其他信息', '评分', '网址'])
for i in range(0, len(games)):
game = [games[i]['game_name'], games[i]['game_date'], games[i]['game_info'], games[i]['game_rank'], \
games[i]['game_url']]
writer.writerow(game)
csvfile.close()
print('csv文件制作完成')
def save_mongodb(games):
client = pymongo.MongoClient('localhost', 27017)
db = client['DB']
game_collection = db.games
game_collection.insert_many(games)
print('入库完成')
def save_excel(games):
wb = xlwt.Workbook()
ws = wb.add_sheet('games', cell_overwrite_ok=True)
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
pattern = xlwt.Pattern()
pattern.pattern_fore_colour = 3
font = xlwt.Font()
font.bold = True
style = xlwt.XFStyle()
basestyle = xlwt.XFStyle()
basestyle.alignment = alignment
style.alignment = alignment
style.pattern = pattern
style.font = font
ws.write_merge(0, 0, 0, 5 , '3DM单机大作排行榜TOP210', style)
titles = ['游戏名', '发售日期与平台', '其他信息', '评分', '网址']
for i in range(0, 5):
ws.write(1, i, titles[i], basestyle)
for i in range(2, len(games)):
ws.write(i, 0, games[i-1]['game_name'], style)
ws.write(i, 1, games[i-1]['game_date'], basestyle)
ws.write(i, 2, games[i-1]['game_info'], basestyle)
ws.write(i, 3, games[i-1]['game_rank'], style)
ws.write(i, 4, games[i-1]['game_url'], basestyle)
wb.save('单机游戏排行榜TOP210.xls')
print('Excel表制作完成')
if __name__ == "__main__":
games = game_spider()
save_csv(games)
save_mongodb(games)
save_excel(games)
运行代码,可以从看到Excel、csv和MongoDB里面都已经写入了内容。
接下来对Excel里的榜单按评分进行排序。
可以看到,最近名声大燥的几款大作都上了榜但评分都不算很高,两款未上线的游戏也是如此,所以我对这个排行榜持怀疑态度,不知道各位网友们怎么看。
python 游戏大作_使用requests和beautifulsoup爬取3DM单机大作排行榜相关推荐
- python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...
- requests 获取div_爬虫系列第五篇 使用requests与BeautifulSoup爬取豆瓣图书Top250
上一篇我们学习了BeautifulSoup的基本用法,本节我们使用它来爬取豆瓣图书Top250. 一.网页分析 我们爬取的网页的url是https://book.douban.com/top250?i ...
- Python使用requests和BeautifulSoup爬取网站内容
实现代码: import requests import re from bs4 import BeautifulSoup url='http://www.cntour.cn/'#这里是要爬取的网站 ...
- Python爬虫之利用requests,BeautifulSoup爬取小说标题、章节
爬取雪鹰领主标题和章节内容为列: 查看网页的源代码,如下图所示: 获取html内容部分 import requests headers = {'User-Agent': 'Mozilla/5.0 ( ...
- Python爬虫实例(2)-用BeautifulSoup爬取一个网页上的多张照片(以百度贴吧为例)
上一篇博客,实现了下载一张图片的简单爬虫.但是其代码,仅仅能下载一张图片.爬虫作为数据分析的第一步工作,需要爬取的是海量数据:假设我想下载一个网站几十张图片,那怎么实现呢? 首先,我们利用框图或者伪代 ...
- 利用Requests和BeautifulSoup爬取网易云音乐热歌榜
一.爬虫代码 .from urllib import request from bs4 import BeautifulSoup import re import requests import ti ...
- python 淘宝搜索_Python使用Selenium+BeautifulSoup爬取淘宝搜索页
使用Selenium驱动chrome页面,获得淘宝信息并用BeautifulSoup分析得到结果. 使用Selenium时注意页面的加载判断,以及加载超时的异常处理. import json impo ...
- Python网页爬虫练习:requests库Beautiful爬取bilibili网页信息
我是卢本伟! import requests from bs4 import BeautifulSoup import bs4 def get_blibli_vedio():#获取bilibili实时 ...
- 【Python简单爬虫练习--Bilibili榜单】爬取+梳理B站排行榜页面
如题,B站老铁爬来玩玩--- 思路: Reuqests.get取得网页元素 BeautifulSoup清洗,梳理出框架 输出存为csv文件 各模块的代码: 1: from requests impor ...
最新文章
- “AI赋能,驱动未来”—— 2018中国人工智能峰会(南京)圆满落幕
- mysql导入csv文件
- hdu 1227(二维dp)
- 「Apollo」Apollo感知汇总
- jpa java.util.map_使用JPA存储Map String,String
- 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧
- 烹调方案(洛谷-P1417)
- 博文视点大讲堂28期 “助你赢在软件外包行业”成功举办
- vue2.0的Element UI的表格table列时间戳格式化
- 用U盘制作Windows7安装以及MacBook Air上装Win7
- 华为、H3C、锐捷、思科四大厂商交换机配置命令,网工人不得不知
- 螳螂科技产研分享:做有生命力的SaaS产品架构
- 在Sony VAIO VGN-UX27CN UMPC上安装Windows XP之经验谈
- matlab 八连通,科学网—四连通和八连通概念理解 - 贺飞扬的博文
- hive函数中的operators, UDF, UDAF, UDTF, PTF
- oracle一次提交大量sql语句 begin end的使用
- 【Python】—— pipenv使用小结
- OpenSea上如何创建自己的NFT(Polygon)
- GDOI2017旅游记
- 计算机系统的构成课程导入,第四课:计算机互联网络