简介:

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 为扩展名的游戏

游戏主体页的的src属性可以得到绝对地址

游戏绝对地址示例: http://sxiao.4399.com/4399swf/upload_swf/ftp29/liuxinyu/20190731/7/main.swf

游戏信息页可以获取相对地址: 在

游戏相对地址示例: /upload_swf/ftp29/liuxinyu/20190731/7/main.swf

所需文件: 爱奇艺万能播放器 ( 已更名为万能联播 ) ( 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()

原文:https://www.cnblogs.com/python0921/p/12869725.html

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

  1. apache poi 修改docx表格_一个excel(20M)就能干趴你的poi,你信吗(附源码)?

    点击上方"阿拉奇学Java",选择"置顶或者星标" 优质文章第一时间送达! 链接: www.cnblogs.com/rongdi/p/11872810.html ...

  2. 手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 打起黄莺儿,莫教枝上啼. 大家好, ...

  3. python爬取微信好友_如何用 Python 爬取自己的微信朋友

    原标题:如何用 Python 爬取自己的微信朋友 作者 Alfred 本文转载自网络,如涉及侵权请及时联系我们 微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天.分 ...

  4. python小助手_如何用python写个人专属群聊提醒小助手?

    前言 大家还记得教会父母玩微信是什么时候吗?父母学会后,我们的生活就发生了「质」的变化,父母也许会吐槽你的微信头像不好,要你换一个头像. 最近 pk哥 又被母后大人吐槽了,原因是亲戚微信群里某个亲戚生 ...

  5. 如何制作python检查小软件_如何用Python制作整蛊小程序

    原标题:如何用Python制作整蛊小程序 下面的整蛊程序,千万不要发代码,否则就实现不了你整蛊的目的了.完成后一定要打包成一个exe程序,再发给朋友使用 . 1. 使用 pip install pyi ...

  6. python爬虫实例电商_如何用代码爬抓电商数据(附淘宝API调用实例)

    原标题:如何用代码爬抓电商数据(附淘宝API调用实例) 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能B ...

  7. php饼图只有一个小方块_如何用Python画一个好看的饼图

    这是一个关于画一个饼图的故事......话说在一个月黑风高的夜晚,笔者肚子饿了,脑海中回想起画饼充饥的典故,于是打算.... 成功冷到自己...... 好吧进入正题,这次我们来说说怎么用python画 ...

  8. 利用python对微信云数据库_如何用python看看女神的微信百度云里面有啥?

    最近幼稚鬼一直苦心研究,怎么给大家发放更多的资料和资源链接.大家都知道,百度云的分享链接是很容易被和谐的,群里除了分享链接外,就是各种抱怨 "怎么又失效了","又和谐了. ...

  9. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  10. python删除excel第一行_如何用 Python 清洗数据?

    林骥的第 38 篇文章 0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后应用数据分析的思维,对目标进行细分,再采取相应的行动.我们可以把数据分析细分为以下 8 个步骤:(1)读取(2)清 ...

最新文章

  1. 初步判断内存泄漏方法
  2. linux 命令行(给自己看的)
  3. Docker 第四章 访问容器
  4. 想宅家学习但实力不允许?9本书,揭秘学霸是如何养成的​
  5. 内心的秘密写在脸上,科学家用面部识别预测性取向和犯罪倾向
  6. memcached客户端(分布算法)
  7. C语言socket发送json,C++实现Socket传输json封装的Mat
  8. Django:MySQL查询结果为datetime.date无法转换为JSON
  9. Microsoft Windows XP Embedded 技术常见问题
  10. 操作系统教程答案(谢旭升,朱明华版)
  11. elasticsearch 使用词干提取器处理英语语言
  12. 用Python中的Numpy实现简单高效的扑克牌API(附代码)
  13. 主题 04:如何设计一个复杂的系统(下)
  14. 01 双重差分与三重差分分析法
  15. 站住!你会修改NPM全局模式的默认安装路径嘛?
  16. ESP01 连接OneNet平台
  17. 中国规模最大速度最快 伦敦车源信息是世界地铁发源地
  18. 苹果全家桶“变态”升级:史上最便宜产品全来了
  19. 组合计算机,计算机组合步骤是什么
  20. excel表格里的时间列杂乱无章,怎样快速统一格式?

热门文章

  1. 记录几款比较好用的jquery插件
  2. python 发送邮件connect none_Python发送邮件功能示例【使用QQ邮箱】
  3. windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式
  4. Android开发之添加QQ群的方法(官方代码)
  5. linux 管理mysql,Linux上MySQL的管理配置
  6. Git commit your changes or stash them before you can merge
  7. python 控件叠加_Python3 tkinter基础 Checkbutton anchor for生成多个控件并西对齐
  8. 基于2D-RNN的鲁棒行人跟踪
  9. Physical Standby Database (11g)-ADG
  10. java整合flex