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

news/2024/5/18 11:55:49/文章来源:https://blog.csdn.net/qq_46614154/article/details/106056245

 

 

简介

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电子文档、面试集锦、学习资料等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_844123.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

遇到网站的反爬虫机制,那么我们应该来如何应对呢?

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 1、使用代理 适用情况&#xff1a;限制IP地址情况&#xff0c;也可解决由于“频繁点击”而需要输入验证码登陆的情况。 这种情况最好的办法就是…

django网站部署流程

服务器 买个服务器&#xff0c;在管理控制台里开启80端口443端口&#xff0c;我用的是阿里云&#xff0c;学生免费试用一年&#xff08;白嫖&#xff09;远程登录到服务器&#xff0c;用scp将本地项目上传到云服务器 # win10的Powershell或者下载WinSCP软件 scp -r 本地项目文…

2008服务器网站设置密码,2008服务器怎么设置密码

2008服务器怎么设置密码 内容精选换一换代码迁移工具进行代码迁移时&#xff0c;需要调用Linux下的rpm、deb等命令才能完成扫描和迁移相关任务&#xff0c;这些命令和逻辑必须在后端Linux运行。IDE插件只支持以Web模式使用root用户安装工具&#xff0c;不支持以CLI模式安装工具…

vue - - - vuepress文档网站部署github

环境 安装nodejs: https://nodejs.org/en/, 版本不能太高(> 8.6即可) 安装git: https://git-scm.com/ Hello World vuepress官网: https://www.vuepress.cn/ 第3步需要等待下载依赖. 1~3步完整命令: zichenDESKTOP-3176F4L MINGW64 ~/Desktop $ mkdir vuepress-starter…

网站数据统计分析之一:日志收集原理及其实现

转 http://my.oschina.net/leejun2005/blog/292709 网站数据统计分析工具是网站站长和运营人员经常使用的一种工具&#xff0c;比较常用的有谷歌分析、百度统计 和 腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于jav…

科技企业网站(1) - 开发背景 - 系统设计

1.开发背景 2.系统设计 2.1 系统目标 界面设计见解、友好、美观大方。操作简单、快捷方便。数据存储安全、可靠。信息分类清晰、准确。强大的模糊查询功能&#xff0c;保证数据查询的灵活性。提供灵活、方便的权限设置功能&#xff0c;使整个系统的管理明确。 2.2 系统功能…

科技企业网站(2) - ThinkPHP框架入门基础知识

1.基础概念 2.使用ThinkPHP框架开发的目录结构 ThinkPHP框架中目录分为两种&#xff1a;系统目录和项目目录。 系统目录是下载ThinkPHP框架库本身的&#xff0c;而项目目录是用户实际应用的目录。ThinkPHP采用自动创建文件夹的机制。 3.自动生成目录&#xff0c;编写入口文…

科技企业网站(3) - 数据库设计

1.数据库概要说明 采用MySQL数据库&#xff0c;用来存储图书相关信息、新闻相关信息、管理员信息等&#xff0c;这里将数据库命名为db_project&#xff0c;其中包含了3张数据表&#xff0c;用于存储不同的信息。 2.数据库概念设计 通过系统功能结构的确定&#xff0c;规划…

科技企业网站(5) - 业界新闻页面设计

1.ThinkPHP框架的导包和加载技术 2.业界新闻页面实现过程 循环输出二位数组的标签&#xff0c;此标签包含两个参数&#xff0c;name指定控制器中传递进来的模板变量&#xff0c;id指定模板变量中的临时变量。 <!DOCTYPE html> <html lang"zh-CN">&l…

科技企业网站(6) - 图书开发页面设计

一、图书开发模块实现过程 1.图片平滑滚动效果关键代码&#xff1a; <!-- 设置图片初始向左滚动并且每隔200毫秒滚动1个像素距离 --> <img src"../Public/Images/JavaII.jpg" width"140px" height"174px" /> <img src"../…

科技企业网站(7) - 后台登录模块

1.管理员权限控制技术 难点&#xff1a;如何才能防止用户越过表单登录到后台管理界面 解决&#xff1a;为了体现越过表单的可行性&#xff0c;笔者在编写的网站程序&#xff0c;故意将SESSION变量写到控制器中&#xff0c;这样任何一个用户都可以登录到网站的后台管理界面。但…

移动前端——通过Chrome自带的开发者工具Emulation模拟移动设备访问网站

一、使用方法 通过快捷键F12或ctrlshifti打开开发者工具&#xff0c;点击左上角类似手机的图标即可查看到Emulation所在的目录&#xff1b; 二、关于Emulation Device&#xff08;设备信息&#xff09;——Model 用于选择模拟的移动设备 ——Resolution 分辨率设置——Divic…

Docker 1--相关资源网站

大家好&#xff0c;我是神韵&#xff0c;是一个技术&生活博主。出文章目的主要是两个&#xff0c;一是好记忆不如烂笔头&#xff0c;记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎来点赞打卡&#xff0c;你们的行动将是我无限的动力。 本篇主题是&#xff1a;相…

一家公司网站上的招聘人才招聘栏目

我不做任何评价。 转载于:https://www.cnblogs.com/Johnson/archive/2007/06/13/782211.html

出租空间位置,给您的网站做连接!

为防止空间位置的浪费&#xff0c;特批了一块地下来&#xff0c;让大家来踩&#xff0c;呵呵&#xff0c;需要搞连接的直接留言&#xff0c;嘿嘿&#xff0c;不过&#xff0c;可不是完全免费的哦&#xff01;转载于:https://blog.51cto.com/sam2080/8093

20个使用网页大背景的网站设计案例

网站大背景使用得好的话&#xff0c;能够让网页看起来有一个非常整体一致的效果&#xff0c;下面与大家分享20个使用网页大背景的网站设计案例。 kuletos.com benthomsonphoto.com gardenerandmarks.com.au krijtenberg.nl demainjarrete.stpo.fr lettercaseapp.com hdqt.co.uk…

从670万天价政府网站看程序员的安全意识

根据财政部网站的中标公告&#xff0c;功能并不复杂的中国工会网站扩建项目一期工程居然花了670万元。这个网站已经被网友戏称为史上最贵网站。众所周知&#xff0c;由于技术发展迅速&#xff0c;现在类似的内容网站的建站成本已经非常低&#xff0c;即使是重新开发所有功能&am…

网站测试自动化系统—数据驱动测试

在前面的文章网站测试自动化系统—基于Selenium和VSTT当中&#xff0c;我简单介绍了使用selenium录制测试步骤&#xff0c;以及优化生成的C#代码&#xff0c;对代码使用面向对象的编程理念进行一些封装&#xff0c;以便规避网站界面更动对测试代码所带来的风险。 在网站测试当中…

【Asp.Net从零开始】:使用缓存来提高网站性能 Caching(二)

一.Application Caching 1.使用Page.Cache对象 //类似Session的键值使用方式protected void Page_Load(object sender, EventArgs e){lb_Time.Text "Hello world!";}protected void btn_submit_Click(object sender, EventArgs e){Cache["greeting"]…