支持正版,从我做起!

最近发售的游戏不少,刚好又在学习爬虫,于是就灵光一闪去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单机大作排行榜相关推荐

  1. python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件

    传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...

  2. requests 获取div_爬虫系列第五篇 使用requests与BeautifulSoup爬取豆瓣图书Top250

    上一篇我们学习了BeautifulSoup的基本用法,本节我们使用它来爬取豆瓣图书Top250. 一.网页分析 我们爬取的网页的url是https://book.douban.com/top250?i ...

  3. Python使用requests和BeautifulSoup爬取网站内容

    实现代码: import requests import re from bs4 import BeautifulSoup url='http://www.cntour.cn/'#这里是要爬取的网站 ...

  4. Python爬虫之利用requests,BeautifulSoup爬取小说标题、章节

    爬取雪鹰领主标题和章节内容为列: 查看网页的源代码,如下图所示:  获取html内容部分 import requests headers = {'User-Agent': 'Mozilla/5.0 ( ...

  5. Python爬虫实例(2)-用BeautifulSoup爬取一个网页上的多张照片(以百度贴吧为例)

    上一篇博客,实现了下载一张图片的简单爬虫.但是其代码,仅仅能下载一张图片.爬虫作为数据分析的第一步工作,需要爬取的是海量数据:假设我想下载一个网站几十张图片,那怎么实现呢? 首先,我们利用框图或者伪代 ...

  6. 利用Requests和BeautifulSoup爬取网易云音乐热歌榜

    一.爬虫代码 .from urllib import request from bs4 import BeautifulSoup import re import requests import ti ...

  7. python 淘宝搜索_Python使用Selenium+BeautifulSoup爬取淘宝搜索页

    使用Selenium驱动chrome页面,获得淘宝信息并用BeautifulSoup分析得到结果. 使用Selenium时注意页面的加载判断,以及加载超时的异常处理. import json impo ...

  8. Python网页爬虫练习:requests库Beautiful爬取bilibili网页信息

    我是卢本伟! import requests from bs4 import BeautifulSoup import bs4 def get_blibli_vedio():#获取bilibili实时 ...

  9. 【Python简单爬虫练习--Bilibili榜单】爬取+梳理B站排行榜页面

    如题,B站老铁爬来玩玩--- 思路: Reuqests.get取得网页元素 BeautifulSoup清洗,梳理出框架 输出存为csv文件 各模块的代码: 1: from requests impor ...

最新文章

  1. “AI赋能,驱动未来”—— 2018中国人工智能峰会(南京)圆满落幕
  2. mysql导入csv文件
  3. hdu 1227(二维dp)
  4. 「Apollo」Apollo感知汇总
  5. jpa java.util.map_使用JPA存储Map String,String
  6. 这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧
  7. 烹调方案(洛谷-P1417)
  8. 博文视点大讲堂28期 “助你赢在软件外包行业”成功举办
  9. vue2.0的Element UI的表格table列时间戳格式化
  10. 用U盘制作Windows7安装以及MacBook Air上装Win7
  11. 华为、H3C、锐捷、思科四大厂商交换机配置命令,网工人不得不知
  12. 螳螂科技产研分享:做有生命力的SaaS产品架构
  13. 在Sony VAIO VGN-UX27CN UMPC上安装Windows XP之经验谈
  14. matlab 八连通,科学网—四连通和八连通概念理解 - 贺飞扬的博文
  15. hive函数中的operators, UDF, UDAF, UDTF, PTF
  16. oracle一次提交大量sql语句 begin end的使用
  17. 【Python】—— pipenv使用小结
  18. OpenSea上如何创建自己的NFT(Polygon)
  19. GDOI2017旅游记
  20. 计算机系统的构成课程导入,第四课:计算机互联网络

热门文章

  1. 自动抓取app数据的攻与防
  2. pandas之美国各州人口分析
  3. 动手学习深度学习 04:多层感知机
  4. 精彩揭秘,一个高大上的机器人自动化工厂需要哪些标配?
  5. 机器学习笔记 (第一周)
  6. 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(8月31日—9月6日)...
  7. C语言程序设计--配套书(第三版)
  8. 服务器修改万兆网卡为千兆,从千兆到万兆 惠普服务器网卡横向导购 上
  9. 达内学软件测试发证书吗,达内软件测试培训让我拥有了实际工作经验
  10. 实验一 基本逻辑门电路