今天照镜子,看着镜子中的自己,发现还是跟年轻时一样的“帅”,看到头部的时候又发现相比半个月之前的发际线,它好像又往上移了一点点。看着这上移的发际线我决定找回童年,把4399上玩过的小游戏再玩一遍。不过在玩游戏的时候呢!我又顺便把4399全站小游戏全抓下来了。顺便给大家分享点知识!
300+Python经典编程案例
50G+学习视频教程
100+Python初阶、中阶、高阶电子书籍
1000+简历模板和汇报PPT模板(转正、年终等)
采集目标
网址: 4399小游戏
工具准备
开发工具:pycharm
开发环境:python3.7, Windows10
使用工具包:requests、csv
效果展示
项目思路解析
第一步获取到目标数据的地址,分析页面的数据加载规则,数据分为两种,一种是静态数据,另外一种是动态数据,判断数据加载可以通过源码分析,查看当前源代码,要是源代码是能搜索出你想要的数据就是静态的,反之就是动态数据,当前网页数据是静态数据
明确数据后对网址发送请求,获取网页数据,获取到数据后,通过特定的方法提取数据信息,(提取数据的方法有正则、xpath、bs4、选择器),根据自己掌握的技术选取相对应的数据规则,需要获取到网页的游戏标题以及游戏详细地址
获取到数据后进行数据的储存,大部分情况数据是保存在数据库的,今天的数据储存在csv的表格文件
简易源码分享
import requests # import parsel import csv from lxml import etree f = open('4399游戏.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=['游戏地址', '游戏名字']) csv_writer.writeheader() for page in range(1, 106): url = 'http://www.4399.com/flash_fl/5_{}.htm'.format(page) headers = { 'User-Agent': '' } response = requests.get(url=url, headers=headers).content.decode('gb2312') # print(response) html_data = etree.HTML(response) lis = html_data.xpath('//div[@class="bre m15"]//ul/li') # lis = selector.css('#classic li') for li in lis: data_url = 'http://www.4399.com' + li.xpath('./a/@href')[0] print(data_url) title = li.xpath('./a/text()')[0] csv_writer.writerow({ '游戏地址': data_url, '游戏名字': title}) f.close()