最近学习了一下selenuim和XPath,技术还很菜,简单的爬取了一下网易云歌曲的排行榜信息,最后保存到mongodb里面

要爬取的部分如下图所示:

爬取每个歌曲的排名,名称,时长,歌手。

创建mongodb连接对象,指定数据库和集合

# 创建mongodb连接对象
client = pymongo.MongoClient(host='localhost',port = 27017)
# 指定数据库
db = client.test
# 指定集合
collection = db.songList

创建Chrome浏览器对象,调用get()方法访问页面。

# 导入包
from selenium import webdriver
# 创建浏览器对象
driver = webdriver.Chrome()
# 访问页面
driver.get('https://music.163.com/')

然后在网易云音乐首页点击排行榜进入要爬取的页面,利用selenium查找节点和点击的功能可以完成这些操作。

# 利用find_element_by_xpath()方法找到排行榜按钮的节点,click()完成点击操作。
driver.find_element_by_xpath('//*[@id="g_nav2"]/div/ul/li[2]/a/em').click()

到了排行榜页面需要注意的是,歌曲的信息在子Frame里面,光查找节点是找不到的,需要先切换到Frame里面,利用switch_to.frame()方法切换。

# 括号中的参数可以输入iframe标签的id值或者name值
driver.switch_to.frame('contentFrame')

后面的就是数据的提取,

# 获取所有的歌曲信息的节点
# 括号中的xpath路径写法有多种,看自己习惯
divs = driver.find_elements_by_xpath('//*[@class="g-wrap12"]//tr[contains(@id,"1")]')
# 依次遍历每一首歌曲提取信息
for div in divs:# 名称# 在xpath路径中要注意的一点是,最前面需要加上一个. 这样才能选取到当前要遍历的节点,要不然最终是匹配不到的,只能永远匹配到第一个歌曲的信息name = div.find_element_by_xpath('.//div[@class="ttc"]//b').get_attribute('title')# 排名rank = div.find_element_by_xpath('.//span[@class="num"]').text# 时长times = div.find_element_by_xpath('.//span[@class="u-dur "]').text# 歌手singer = div.find_element_by_xpath('./td/div[@class="text"]/span').get_attribute('title')# 提取完每一个歌曲的信息保存到mongodb里面song = {'rank':rank,'name':name,'time':times,'singer':singer}collection.insert_one(song)

保存到mongodb结果如下:

最后源代码如下:

from selenium import webdriver
import pymongo
import timedef main():driver.find_element_by_xpath('//*[@id="g_nav2"]/div/ul/li[2]/a/em').click()driver.switch_to.frame('contentFrame')time.sleep(2)divs = driver.find_elements_by_xpath('//*[@class="g-wrap12"]//tr[contains(@id,"1")]')for div in divs:# 名称name = div.find_element_by_xpath('.//div[@class="ttc"]//b').get_attribute('title')# 排名rank = div.find_element_by_xpath('.//span[@class="num"]').text# 时长times = div.find_element_by_xpath('.//span[@class="u-dur "]').text# 歌手singer = div.find_element_by_xpath('./td/div[@class="text"]/span').get_attribute('title')song = {'rank':rank,'name':name,'time':times,'singer':singer}collection.insert_one(song)if __name__ == '__main__':client = pymongo.MongoClient(host='localhost',port = 27017)db = client.testcollection = db.songListdriver = webdriver.Chrome()driver.get('https://music.163.com/')main()

Python利用selenium简单的爬取网易云歌曲排行榜相关推荐

  1. python爬取网易云音乐排行榜数据

    python爬取网易云音乐排行榜歌曲及评论 网易云音乐排行榜歌曲及评论爬取 主要注意问题:selenium 模拟登录.iframe标签定位.页面元素提取. 在利用selenium定位元素并取值的过程中 ...

  2. 爬取网易云歌曲榜单中网易云歌曲及其对应id xpath csv re requests python

    基操爬取网易云歌曲榜单中网易云歌曲及其对应id 回顾xpath csv re requests 先进行基础抓包! 1 2 3 然后就是代码啦,兄弟们,我的代码都很完整,看懂思路,直接收藏复制粘贴就可以 ...

  3. python3之Scrapy+Selenium切换iframe抓取网易云音乐排行榜

    Scrapy+Selenium切换iframe抓取网易云音乐排行榜 iframe标签 Selenium (WEB自动化工具) Scrapy 框架 iframe标签 了解一下iframe 百度百科介绍的 ...

  4. Python爬取网易云歌曲评论,做词云分析

    前言 emmmm 没什么说的,想说的都在代码里 环境使用 Python 3.8 解释器 3.10 Pycharm 2021.2 专业版 selenium 3.141.0 本次要用到selenium模块 ...

  5. python播放在线音乐_Python爬取网易云音乐播放地址

    本帖最后由 bbbbbd 于 2017-9-25 12:13 编辑 Python爬取网易云音乐播放地址 运行环境:Python2.7 一.分析目标网站 首先打开网易云音乐的官网,在搜索列表中随便搜索一 ...

  6. 【python爬虫自学笔记】-----爬取网易云歌单中歌曲歌词

    工具:python3.6 ,pycharm 个人歌单的链接地址为https://music.163.com/#/playlist?id=2251736705 开始对网页的内容进行爬取的时候,使用req ...

  7. python爬取网易云音乐排行榜歌单热评(完整版)

    完整版的爬取网易云音乐的排行榜单,和推荐榜单,热评 直接上代码,代码写的很清楚 为了防止被封我们先做个随机获取User_Agent """随机获取请求头"&qu ...

  8. 用Python给我写一个爬取网易云的音乐代码

    好的,为了爬取网易云音乐,我们需要使用一些第三方库来帮助我们处理网络请求和解析 HTML/XML 数据.在这里,我建议您使用 requests 库来发送网络请求和 Beautiful Soup 库来解 ...

  9. 爬取网易云音乐排行榜

    使用Python中的selenium模块爬取网易云排行榜前100条 from selenium import webdriver from openpyxl import Workbook url = ...

最新文章

  1. Codeforces Round #278 (Div. 2)
  2. C++重载、覆盖和遮蔽
  3. 11、MySQL算术运算符
  4. python遇到错误跳过_python except异常处理之后不退出,解决异常继续执行的实现
  5. css : 使用浮动实现左右各放一个元素时很容易犯的错误
  6. Kafka分布式环境搭建
  7. 【Clion-Ubuntu-dlib】运行一个dlib案例(一)(如何在clion编译器中配置CMakeLists)
  8. opencv画框返回坐标 python_[python]依靠pynput和pyautogui替换ahk
  9. mac 内核调试环境搭建
  10. Java集合性能分析-疯狂Java讲义
  11. matlab论坛真不活跃,MATLAB中文论坛常见问题归纳
  12. [USACO19FEB]Cow Dating——找规律
  13. 在线解析短视频去水印工具
  14. WinPE启动映像制作(具体可参考WAIK帮助文档,这里只做简介)WinPe Image 制作篇
  15. 秃友进销存标准版内存注册机 Cracked.By.HackWm.
  16. Hadoop培训视频教程
  17. SSID、BSSID、ESSID的区别
  18. Python例题:设计一个工资(月薪)结算系统
  19. 算法 树7 二叉搜索树的操作集
  20. tp5和微信小程序联接mqtt订阅及发布

热门文章

  1. linux固态硬盘检测,linux 检查硬盘是 SSD or HDD
  2. Centos Linux 单机安装 HBase 、使用 HBase
  3. mysql 云端连接_云服务器远程连接mysql数据库
  4. 17暑期ACM俱乐部个人训练赛第1场 (石油oj) 7.24号
  5. 网红电商剧烈洗牌,机会将属于拥有“头部网红矩阵”的MCN机构?
  6. Flir Blackfly S 工业相机:自动曝光配置及代码
  7. 27.html的定位(position)和偏移量(offset)
  8. 微信小程序面试题大全
  9. 手写Vue个人组件库——fl-Lazyimg 图片懒加载
  10. 【个人感悟】谈谈算法工程师毕业一年的感悟