美文网首页程序员代码改变世界
使用Python抓取网页数据(一)

使用Python抓取网页数据(一)

作者: Mokyz | 来源:发表于2015-12-22 14:31 被阅读6681次

    iOS python 爬虫 LoL


    学习iOS开发有一段时间了,最近想做一个自己的App玩玩,自己比较喜欢玩LOL,所以想试着做一个LOL资料库的App,那么问题来了,这么多英雄,物品等数据怎么获取呢,总不能自己手敲吧。身为一个程序猿,这种事情怎么能自己来做呢。这时候就可以祭出神器Python了,我们直接进入主题。

    一、 寻找数据


    要想获取数据,首先得找到哪里有数据,各大游戏媒体网站都有自己的资料库,这里我选择官方的资料库,地址: LOL官方资料库

    [LOL官方资料库](http://lol.qq.com/web201310/info-heros.shtml)

    英雄,物品,技能,符文,天赋都有了,数据也是最新的。OK,猎物找到了,开始狩猎之前还要做一些准备。

    二、 准备工作


    • 浏览器:我们需要用浏览器查看网页源码,Safari 和 Chrome 都可以,这里我选择Safari,感觉 Safari 的元素查看更方便一点,可以快速定位到我们需要的地址。Safari默认没有“开发”选项,需要到“偏好设置”-“高级”中勾选


      显示“开发”菜单
    • 编辑器:写代码当然得需要编辑器了,我使用的是 VS Code,是微软推出的一个编辑器,风格也是我喜欢的,但是比较蛋疼,没有 Python 的自动补全,也可能需要下载其他插件或工具才可以。反正我这里我也不用了,有知道的伙伴还请多多赐教。不过 VS Code 使用起来感觉还是不错的。推荐试试


      VS Code
    • 调试工具:我没有使用 Python 自己的 IDE,而 VS Code 也只是编辑器而已,调试就不行了,所以我这里直接使用 OS X 的终端调试,毕竟感觉diaodiao哒~,调试时只需要cd到python文件目录,执行命令

    python filename.py
    
    • 库:做网络爬虫,需要一些Python的库。有些 Python 自带,有些还需要自己下载,下载可以使用 pipeasy_install,这两个工具都需要另外下载,可参考我的另一篇简书OS X下Pip的安装,具体需要什么库我们使用时再说。
      万事俱备

    三、 网页分析


    我们所要抓取的数据有图片、文字或文件,图片和文件一般都是一个地址,文字可能存在于文件,也可能直接写在网页源码中。所以,我们先对网页进行分析,熟悉战场。
      在Safari中打开 LOL官方资料库,点击菜单“开发”-“显示页面源文件” 或 按快捷键 alt+command+a/u,进入开发者工具,点击“元素”标签

    safari开发者工具

    在我们把鼠标移动到不同行代码时,网页中当前代码对应的元素会被选中,这可以帮助我们快速定位到关键代码,我们先试着找到 九尾妖狐 头像的图片地址,如上图所示
    <img src="http://ossweb-img.qq.com/images/lol/img/champion/Ahri.png"

    四、小试牛刀


    现在我们就来试试把这张图片下载到本地。
      创建Python文件,可以使用VSCode新建空白文件,保存时后缀为.py,也可以在终端执行命令

    cd Desktop/        //进入Desktop文件夹
    touch filename.py  //在当前文件夹内新建文件
    

    用编辑器打开文件,编写代码:

    #-*-coding:utf8-*-
    import os, requests
    
    img_url = "http://ossweb-img.qq.com/images/lol/img/champion/Ahri.png"
    # 截取文件名
    img_name = os.path.basename(img_url)
    # 下载图片
    img = requests.get(img_url)
    # 打开本地文件
    # 'wb'表示以二进制写入模式打开文件
    file = open('/Users/apple/img//' + img_name, 'wb')
    # 写入文件
    file.write(img.content)
    # 关闭文件
    file.close
    

    这里用到两个库,osrequests库,os python本身自带,requests需要手动下载,在终端执行

    pip install requests
    

    这是一个简单的下载和保存的例子,不过已经可以满足我们的需求了,只需要稍作修改就能完成我们的目标了。

    未完待续

    相关文章

      网友评论

        本文标题:使用Python抓取网页数据(一)

        本文链接:https://www.haomeiwen.com/subject/jxamhttx.html