python编程学习之面向函数初接触!这次我们来抓取QQgame信息吧!

作为一个长期坐办公室的闲人来说,QQ游戏一度是我们的主要消磨时间的工具,当然现在改成python了,哈哈。

今天我们就来抓取下QQgame下所有游戏的页面地址和简介,然后分类保存本地吧!

这里我们用面向函数的模式试试写我们的爬虫。

首先是分析url,主页地址:http://qqgame.qq.com/,打开F12开发者工具,

这里我们可以看到有很多的分页,仔细看看就会发现主要是分2大块:热门游戏/最新游戏(这俩url竟然是一样的,腾讯的程序员你们是有多懒。。。)和分类游戏(棋牌、网页、单机、街机等等),其实只需要爬后者就可以,但是各个分类下游戏页面并不多,热门游戏里面有500多款呢,所以干脆一起抓取下来,然后分类保存就好!

找到游戏分类后,再进入随便一个分类页面,来看看网页构成。

非常简单的网页,这里我们可以很容易获取游戏的url和相关信息

我们提取中间的游戏名字,简介,链接就可以了(大型游戏并不在QQgame里面)。Ok,我们开工!

2、代码实现

这次我们用到了requests、time、random、json和lxml模块,其中我们的最终结果要保存为json文件,所以这里导入了json模块

构造一个函数作为主体函数main(),把url写入进去,新建一个空字典,用于接收相关信息,我们这次采用xpath模块来匹配相应标签内容,简单快捷。

最后5行是做为主程序执行,加入了开始和结束时间,用于统计用时,并显示出来

这里我们新建了2个函数,一个是get_html函数,用于获取网页源码,UA部分填写自己的就可以。在函数内做一个判断,如果没有访问成功则返回False,用于判断网页是否可访问!后面会多次用到。

还有一个就是save函数用于存储数据,它接收main函数传入的分类字典,字典内含有分类名字和url对应的各个元素,将key值取出做循环遍历字典,然后用dic[key]来取出对应的url。因为存在每个分类的翻页,所有在下面做一个while循环,并新建2个函数,1个获取当前页相应内容的函数,1个是获取下一页url的函数,用if判断,如果下一页存在,则继续循环,不存在则跳出循环并显示相应信息。然后将返回的页面信息写入文件!

注意while循环下先用if函数判断传入的url是否可访问,来决定是否执行获取信息!

Next_url函数获取下一页的url地址并返回!注意源码中下一页的跳转url是简写模式,需要加上前面的主页信息,但又不是‘’qqgame.qq.com“,这里是个大坑!

Get_game函数获取当前页面所有的相关信息,并保存到字典返回!

为了结果的美观,这里我们新建了3个字典,返回数据为{序号:{游戏名称:{游戏简介,游戏页面地址}}}的模式!

到这里,整个代码就写完了,我们运行并验证下吧!

3、运行结果!

开始运行

运行完毕,因为没有多少内容,所以速度还是很快的,30多秒完成!

保存的文件

记事本打开一个看看

乱码?不要着急,我们找个在线解析json的网页,看看内容是什么!将内容复制到网页的json数据中

点击视图

吼吼~!数据出来了有没有!我们去网页中找找看是否正确!

数据一致~!写完手工!

完整代码送上

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180304A0C0IW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励