西安商铺出租网,柏宝利,淘宝网凉鞋
简介:
python 是一门简单易学且功能强大的编程语言,无需繁琐的配置,掌握基本语法,了解基本库函数,就可以通过调用海量的现有工具包编写自己的程序,轻松实现批量自动化操作,可以极大提高办公和学习效率。python爬虫可以批量获取网页上的数据。
1. 代码编辑器 pycharm community
2. 代码解释器 python 3.7.6
3. 在pycharm中创建项目并配置python环境
4. 安装工具包的两种方式
1、爬虫的基本步骤
2、4399小游戏的本地运行
游戏绝对地址示例: http://sxiao.4399.com/4399swf/upload_swf/ftp29/liuxinyu/20190731/7/main.swf
游戏相对地址示例: /upload_swf/ftp29/liuxinyu/20190731/7/main.swf
3、4399小游戏爬虫实现思路
完整代码
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()
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论