大家好,《手把手教你写网络爬虫》连载开始了!在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意。本文由浅入深的把爬虫技术和盘托出,为初学者提供一种轻松的入门方式。请跟随我们一起踏上爬虫学习的打怪升级之路吧!

介绍

什么是爬虫?

先看看百度百科的定义:

把这段代码保存为get_html.py,然后运行,看看输出了什么:

定位到的html代码:

有了这些信息,就可以用BeautifulSoup提取数据了。升级一下代码:

把这段代码保存为get_data.py,然后运行,看看输出了什么:

没错,得到了我们想要的数据!

BeautifulSoup提供一些简单的、Python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。怎么样,是不是觉得只要复制粘贴就可以写爬虫了?简单的爬虫确实是可以的!

一个迷你爬虫

我们先定一个小目标:爬取网易云音乐播放数大于500万的歌单。

打开歌单的url: http://music.163.com/#/discover/playlist,然后用BeautifulSoup提取播放数3715。结果表明,我们什么也没提取到。难道我们打开了一个假的网页?

Selenium:是一个强大的网络数据采集工具,其最初是为网站自动化测试而开发的。近几年,它还被广泛用于获取精确的网站快照,因为它们可以直接运行在浏览器上。Selenium 库是一个在WebDriver 上调用的API。WebDriver 有点儿像可以加载网站的浏览器,但是它也可以像BeautifulSoup对象一样用来查找页面元素,与页面上的元素进行交互(发送文本、点击等),以及执行其他动作来运行网络爬虫。安装方式与其他Python第三方库一样。

$pip install Selenium

验证一下:

Selenium 自己不带浏览器,它需要与第三方浏览器结合在一起使用。例如,如果你在Firefox 上运行Selenium,可以直接看到一个Firefox 窗口被打开,进入网站,然后执行你在代码中设置的动作。虽然这样可以看得更清楚,但不适用于我们的爬虫程序,爬一页就打开一页效率太低,所以我们用一个叫PhantomJS的工具代替真实的浏览器。

PhantomJS:是一个“无头”(headless)浏览器。它会把网站加载到内存并执行页面上的JavaScript,但是它不会向用户展示网页的图形界面。把Selenium和PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,可以处理cookie、JavaScript、header,以及任何你需要做的事情。

PhantomJS并不是Python的第三方库,不能用pip安装。它是一个完善的浏览器,所以你需要去它的官方网站下载,然后把可执行文件拷贝到Python安装目录的Scripts文件夹,像这样:

开始干活!

打开歌单的***页:

http://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=0

用Chrome的“开发者工具”F12先分析一下,很容易就看穿了一切。

播放数nb (number broadcast):29915

封面 msk (mask):有标题和url

同理,可以找到“下一页”的url,***一页的url是“javascript:void(0)”。

***,用18行代码即可完成我们的工作。

把这段代码保存为get_data.py,然后运行。运行结束后,在程序的目录里生成了一个playlist.csv文件。

看到成果后是不是很有成就感?如果你感兴趣,还可以按照这个思路,找找评论数最多的单曲,再也不用担心没歌听了!

今天的内容比较浅显,希望对你有用。就先介绍到这里,我们下期再见!

原文链接:http://www.cnblogs.com/tuohai666/p/8718107.html

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

python网络爬虫网易云音乐_手把手教你写网络爬虫(1):网易云音乐歌单相关推荐

  1. [原创]手把手教你写网络爬虫(2):迷你爬虫架构

    手把手教你写网络爬虫(2) 作者:拓海 (https://github.com/tuohai666) 摘要:从零开始写爬虫,初学者的速成指南! 封面: 介绍 大家好!回顾上一期,我们在介绍了爬虫的基本 ...

  2. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  3. windows脚本编制引擎_手把手教你写脚本引擎(一)

    手把手教你写脚本引擎(一)--挑选语言的特性 陈梓瀚 华南理工大学软件本科05级 脚本引擎的作用在于增强程序的可配置性.从游戏到管理系统都需要脚本,甚至连工业级产品的Office.3DS Max以及A ...

  4. 手把手教你写网络爬虫(1):网易云音乐歌单

    介绍 什么是爬虫? 先看看百度百科的定义: 简单的说网络爬虫(Web crawler)也叫做网络铲(Web scraper).网络蜘蛛(Web spider),其行为一般是先"爬" ...

  5. python爬虫爬取房源_手把手教你用Python网络爬虫爬取新房数据

    项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以「惠民之家」 ...

  6. 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第三弹)-阿里云开发者社区...

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  7. 手把手教你写网络爬虫(1)

    介绍 什么是爬虫? 先看看百度百科的定义: 简单的说网络爬虫(Web crawler)也叫做网络铲(Web scraper).网络蜘蛛(Web spider),其行为一般是先"爬" ...

  8. 手把手教你写网络爬虫(2):迷你爬虫架构

    介绍 大家好!回顾上一期,我们在介绍了爬虫的基本概念之后,就利用各种工具横冲直撞的完成了一个小爬虫,目的就是猛.糙.快,方便初学者上手,建立信心.对于有一定基础的读者,请不要着急,以后我们会学习主流的 ...

  9. 【爬虫】手把手教你写网络爬虫(2)

    介绍 大家好!回顾上一期,我们在介绍了爬虫的基本概念之后,就利用各种工具横冲直撞的完成了一个小爬虫,目的就是猛.糙.快,方便初学者上手,建立信心.对于有一定基础的读者,请不要着急,以后我们会学习主流的 ...

最新文章

  1. 2021CVPR顶会冠军带你解密图像分割
  2. 合格的后端Coder都应该写好UT和Mock测试
  3. Perl 变量(1)--纯变量
  4. ubuntu16.04下面xfce4没有声音
  5. (王道408考研操作系统)第三章内存管理-第一节6-3:非连续分配管理方式之基本分页存储管理之具有快表的地址变换机构
  6. java查漏补缺(基础篇)
  7. Flex中实现Tree绑定数据后自动展开节点
  8. 没想到,这么简单的线程池用法,深藏这么多坑!
  9. 【转】字符串编辑距离
  10. 360千兆路由计算机安装方法,360路由器怎么设置(设置步骤_360路由器怎么安装?-192路由网...
  11. android 三星 蓝牙sco,android – 来电后蓝牙SCO失败
  12. Web3.0峰会上IPFS最新消息利好不断
  13. 信用评分卡模型开发中双峰分布原因及解决方案
  14. AndroidiOS崩溃情况总结
  15. 阿里云机器学习PAI-快速上手指南
  16. 公司内网安装dns,然后把域名ning.com直接指向ingress-nginx的ip
  17. 万达商业再递招股书:上半年派息35亿 腾讯与碧桂园是股东
  18. fedora14配置无线连接
  19. echarts 圆图带图片显示
  20. Python小作业 列举红黄绿小球的组合

热门文章

  1. 深棕颜色html的色号,棕色发色适合什么肤色 深棕色和浅棕色的区别
  2. android SwitchPreference ListPreference使用
  3. DML、DDL、DCL的概念及区别
  4. (思维)765. 情侣牵手
  5. 网络安全 -- 常见的攻击方式和防守
  6. 基于spss的主成分分析法(Principal Component Analysis,PCA)
  7. 谈谈网页中使用奇数字体和偶数字体
  8. Linux 学习笔记 文件、目录操作与用户群组权限
  9. 打开mdf、mds格式文件的方法
  10. Sigmaplot 13下载有没有免费的