简介

Python 是一门简单易学且功能强大的编程语言,无需繁琐的配置,掌握基本语法,了解基本库函数,就可以通过调用海量的现有工具包编写自己的程序,轻松实现批量自动化操作,可以极大提高办公和学习效率。Python爬虫可以批量获取网页上的数据。

Python的环境配置

1. 代码编辑器 Pycharm community

2. 代码解释器 Python 3.7.6

3. 在Pycharm中创建项目并配置Python环境

4. 安装工具包的两种方式

4399小游戏爬虫实战

1、爬虫的基本步骤

  • 使用requests下载网页
  • 使用BeautifulSoup将requests下载的内容解析为DOM (文档对象模型)
  • 通过DOM获取所需要的数据

2、4399小游戏的本地运行

  • 支持下载到本地的游戏 : 以 .swf 为扩展名的游戏
  • 游戏主体页的<embed>的src属性可以得到绝对地址
 
游戏绝对地址示例: http://sxiao.4399.com/4399swf/upload_swf/ftp29/liuxinyu/20190731/7/main.swf
  1. 游戏信息页可以获取相对地址: 在<script>标签中 , Ctrl+F 搜索关键字 _strGamePath可以得到
 
游戏相对地址示例: /upload_swf/ftp29/liuxinyu/20190731/7/main.swf
  1. 所需文件: 爱奇艺万能播放器 ( 已更名为万能联播 ) ( GeePlayer.exe )万能联播PC版

3、4399小游戏爬虫实现思路

  • 爬取4399好玩的小游戏页面(http://www.4399.com/flash/gamehw.htm), 通过解析得到DOM来获取所有的游戏链接
  • 遍历所有的游戏链接, 开启线程下载该链接的网页并判断该游戏是否支持下载到本地, 如果支持则拼接下载地址, 并开启游戏下载线程
  • 游戏下载线程: 根据下载地址来下载 .swf 文件并保存到本地

完整代码

 
1import os 2import re 3import threading 4 5from bs4 import BeautifulSoup as bs 6import requests 7 8 9def getAllGameUrl(): 10 """ 11 获取所有游戏的名称和游戏信息页的链接 12 :return: 13 """ 14 gameUrlList = [] 15 response = requests.get('http://www.4399.com/flash/gamehw.htm') 16 dom = bs(response.content, 'html.parser') 17 gameLiList = dom.select('#skinbody > div:nth-child(6) > ul > li') 18 for i in gameLiList: 19 # 获取游戏的名称 20 gameName = i.select_one('a > b').get_text() 21 # 获取游戏信息页的链接 22 # 'http://www.4399.com/flash/212103.htm' 23 gameInfoUrl = indexUrl + i.select_one('a')['href'] 24 gameUrlList.append({'gameName': gameName, 'gameInfoUrl': gameInfoUrl}) 25 return gameUrlList 26 27 28def downloadIfAvailable(game): 29 """ 30 判断一个游戏是否支持本地下载 31 :return: 32 """ 33 response = requests.get(game['gameInfoUrl']) 34 plainText = response.text 35 relativeUrlList = re.findall(r'(?<=_strGamePath=").+?\.swf', plainText) 36 if len(relativeUrlList) != 0: 37 gameUrl = gameBaseUrl + relativeUrlList[0] 38 game['gameUrl'] = gameUrl 39 threading.Thread(target=downloadAGame, args=(game,)).start() 40 41 42def downloadAGame(game): 43 """ 44 根据下载链接下载游戏,并保存到.swf文件 45 :param game: 46 :return: 47 """ 48 downloadPath = 'games/' 49 if not os.path.exists(downloadPath): 50 try: 51 os.mkdir(downloadPath) 52 except FileExistsError as e: 53 print(e) 54 with open(downloadPath + game['gameName'] + '.swf', 'wb') as file: 55 file.write(requests.get(game['gameUrl']).content) 56 print(game['gameName'] + '下载完成') 57 58 59if __name__ == '__main__': 60 indexUrl = 'http://www.4399.com' 61 gameBaseUrl = 'http://sxiao.4399.com/4399swf' 62 gameUrlList = getAllGameUrl() 63 for i in gameUrlList: 64 threading.Thread(target=downloadIfAvailable, args=(i,)).start()

欢迎点击左上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。

如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)相关推荐

  1. python爬取网站教学视频_零基础Python爬取网页文章和图片详细教学(内附源码、教学视频)...

    Python爬虫,这个我相信对于很多人来说都不陌生! 今天小编给大家提供一份零基础Python爬取网页图片以及小说的代码并且详细的和大家讲解一下! 开发环境:版本Python3.6.2!(2版本会在2 ...

  2. 爬虫实战—轻松爬取全国40城5000+地铁站点数据!附源码和数据集

    原文链接:小一教你轻松爬取全国40城5000+地铁站点数据!附源码和数据集 大家好,我是小一 上一篇文章讲了一个失败的数据分析案例,导致失败最最主要的原因就两个字:数据 有时候,爬虫爬到的数据是很珍贵 ...

  3. Python爬虫实战,requests+openpyxl模块,爬取小说数据并保存txt文档(附源码)

    前言 今天给大家介绍的是Python爬取小说数据并保存txt文档,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样 ...

  4. 教你用PHP爬取王者荣耀英雄皮肤高清壁纸(附源码)

    午饭后看到一篇文章关于"用Python爬取王者荣耀官网的英雄皮肤图片",于是顺手用PHP也写了一个,在这里给大家分享一下,贴出源码: //下载王者荣耀皮肤图片 public fun ...

  5. 教你轻松爬取全国40城5000+地铁站点数据!(附源码)

    大家好,我是 辰哥~ 今天介绍一种新的 获取城市地铁站点数据的方法,而且不再只是北上广深四个城市,而是 全国开通地铁的城市. 对了,你觉得全国有多少个城市开通了地铁? 文末附源码 ▶正文 今天爬取数据 ...

  6. python爬取小游戏_如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)...

    简介: Python 是一门简单易学且功能强大的编程语言,无需繁琐的配置,掌握基本语法,了解基本库函数,就可以通过调用海量的现有工具包编写自己的程序,轻松实现批量自动化操作,可以极大提高办公和学习效率 ...

  7. 20行Python代码爬取2W多条音频文件素材【内附源码+详细解析】新媒体创作必备

    大家好,我是辣条. 今天的内容稍显简单,不过对于新媒体创作的朋友们还是很有帮助的,你能用上的话记得给辣条三连! 爬取目标 网站:站长素材 工具使用 开发工具:pycharm 开发环境:python3. ...

  8. Python爬取新闻标题及链接存至 Excel(含源码)

    新闻网址: https://www.tsinghua.edu.cn/news.htm 本片文章实现爬取新闻标题和链接 将新闻标题及链接存储至 Excel 表 源码 # 清华新闻import panda ...

  9. 小一教你轻松爬取全国40城5000+地铁站点数据!附源码和数据集

    大家好,我是小一 上一篇文章讲了一个失败的数据分析案例,导致失败最最主要的原因就两个字:数据 有时候,爬虫爬到的数据是很珍贵.很稀缺,但是在实际项目最好还是多点谨慎,保证万无一失. 今天介绍一种新的 ...

最新文章

  1. lc412. Fizz Buzz
  2. 华三交换机ping不通用户但用户_H3C故障常见故障及解决方案
  3. iptables redirect 劫持跳转引起 Go 服务故障
  4. 轻松解决Android gradle太慢问题
  5. Python 正则表达式(一)
  6. Python 机器学习——线性代数和矩阵运算:从matlab迁移到python
  7. LINQ 花3个礼拜的时间来弄清楚
  8. 2020年江西省职业院校技能大赛“信息安全管理与评估”赛项样题(高职组)
  9. 俄数学天才破解庞加莱猜想拒领百万奖金(图)
  10. 在APPLE从创建ID到申请发布AppStore账户(六)新建AppleID用户首次使用要求双重认证(您的 Apple ID 需要更新)
  11. 【Unity3d】存档与读档
  12. iOS 5 故事板进阶(2)
  13. linux上ssh免密登录原理及实现
  14. (转)11gR2新特性:Heavy swapping observed on system in last 5 mins
  15. ping百度的时候出现ping www.a.shifen.com
  16. python创建一个文本文件、包含10行字符串、每行字符串由_Python2:使用正则表达式从文本文件中提取整行,子字符串来自anoth...
  17. 菜鸟程序员如何快速进阶成为编程老司机?
  18. unity3d安卓打包教程
  19. 走出雾霾,中国工业只能向上,你还在拖后腿吗?
  20. flutter-剪裁(Clip)

热门文章

  1. 直连模式、PAC模式和全局模式
  2. php 长时间任务,棘轮PHP和长时间运行的任务
  3. 【Spring常见错误】No qualifying bean of type
  4. 让Windows 7自动显示详细登录时间
  5. mysql表多大的时候需要分区_数据库分区表 什么情况下需要分区
  6. 大牛手把手带你!2021新一波程序员跳槽季,大牛最佳总结
  7. Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
  8. 【五分钟读懂】PHP中的opcache是什么,opcache是用来干嘛的?
  9. 使用事务注解导致数据库事务一直在运行
  10. 1250名微软员工要求公开薪资:“跟风”苹果,却陷入困境。