网络爬虫教程(1):音乐歌单编写

在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意。本文由浅入深的把爬虫技术和盘托出,为初学者提供一种轻松的入门方式。请跟随我们一起踏上爬虫学习的打怪升级之路吧!
什么是爬虫? 先看看百度百科的定义:
把这段代码保存为get_html.py,然后运行,看看输出了什么:
定位到的html代码:
有了这些信息,就可以用beautifulsoup提取数据了。升级一下代码:
把这段代码保存为get_data.py,然后运行,看看输出了什么:
没错,得到了我们想要的数据!
beautifulsoup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。怎么样,是不是觉得只要复制粘贴就可以写爬虫了?简单的爬虫确实是可以的!
一个迷你爬虫
我们先定一个小目标:爬取网易云音乐播放数大于500万的歌单。
打开歌单的url: http://music.163.com/#/discover/playlist,然后用beautifulsoup提取播放数《span class=”nb”》3715《/span》。结果表明,我们什么也没提取到。难道我们打开了一个假的网页?
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文件。
看到成果后是不是很有成就感?如果你感兴趣,还可以按照这个思路,找找评论数最多的单曲,再也不用担心没歌听了!

实战经验 | 移植 SBSFU 到 STM32G070 的过程
智能疏散系统的优势有哪些
无人机反制枪能针对哪些小型飞行器
华硕双十一钜惠来袭,4K新品PA279CV显示器广受欢迎
UWB强势来袭 无线通信技术百花齐放
网络爬虫教程(1):音乐歌单编写
当AI将取代人工效率,一亿人如何应对
电源管理芯片U6202SC脚位分析
安捷伦携手澳门科技大学成立联合实验室
半导体测试分选机企业庆鑫科技投资进驻马来西亚科技园
SMT工艺材料简介
退耦不好负载电容过大等对集成运放电路影响有多大?
美的的库卡:工业机器人企业的百年历史与近年市场分析
优必选今日在港交所上市
未来黑科技Futurus推出最新科技 全方位赋能全球车企自动驾驶技术
2020年彩电行业出现了哪些趋势?
关于保护USB应用程序的确定步骤
未来十年科大讯飞要成为人工智能三大时代潮流趋势的“领导者”
MCU之IEC_60335_CLASSB软件库
TDK、村田等被动元件厂商大举进场电动车