python爬取小游戏_如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)...
簡介:
Python 是一門簡單易學(xué)且功能強大的編程語言,無需繁瑣的配置,掌握基本語法,了解基本庫函數(shù),就可以通過調(diào)用海量的現(xiàn)有工具包編寫自己的程序,輕松實現(xiàn)批量自動化操作,可以極大提高辦公和學(xué)習(xí)效率。Python爬蟲可以批量獲取網(wǎng)頁上的數(shù)據(jù)。
Python的環(huán)境配置
1. 代碼編輯器 Pycharm community
2. 代碼解釋器 Python 3.7.6
3. 在Pycharm中創(chuàng)建項目并配置Python環(huán)境
4. 安裝工具包的兩種方式
4399小游戲爬蟲實戰(zhàn)
1、爬蟲的基本步驟
使用requests下載網(wǎng)頁
使用BeautifulSoup將requests下載的內(nèi)容解析為DOM (文檔對象模型)
通過DOM獲取所需要的數(shù)據(jù)
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
所需文件: 愛奇藝萬能播放器 ( 已更名為萬能聯(lián)播 ) ( GeePlayer.exe )萬能聯(lián)播PC版
3、4399小游戲爬蟲實現(xiàn)思路
爬取4399好玩的小游戲頁面(http://www.4399.com/flash/gamehw.htm), 通過解析得到DOM來獲取所有的游戲鏈接
遍歷所有的游戲鏈接, 開啟線程下載該鏈接的網(wǎng)頁并判斷該游戲是否支持下載到本地, 如果支持則拼接下載地址, 并開啟游戲下載線程
游戲下載線程: 根據(jù)下載地址來下載 .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(chǎn) > b‘).get_text()
21 # 獲取游戲信息頁的鏈接
22 # ‘http://www.4399.com/flash/212103.htm‘
23 gameInfoUrl = indexUrl + i.select_one(‘a(chǎn)‘)[‘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 根據(jù)下載鏈接下載游戲,并保存到.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
總結(jié)
以上是生活随笔為你收集整理的python爬取小游戏_如何用Python爬取小游戏网站,把喜欢的游戏收藏起来(附源码)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器(汉
- 下一篇: excel python插件_利用 Py