【python爬虫】 爬云音乐我和xxx共同听过的歌曲
闲聊的时候,觉得,想写个爬虫,爬下2个人共同听过的歌曲有哪些,然后一鼓作气,花了一个多小时,写了一个。支持最近一周和所有时间,需要用户没有关闭听歌排行显示
How to start
使用到的工具是Selenium一个web自动化测试工具,提供IDE以及插件多种方式。python下安装
pip install selenium
chromedriver.exe 下载对应Chrome版本的driver.exe,仓库带了一份Chrome version 78的driver.exe
代码不多,60行,我就直接贴代码了。
python main.py
# -*- coding:utf-8 -*-
from enum import Enum
from time import sleep
from selenium import webdriver
import selenium.webdriver.support.ui as ui
import sys
reload(sys)
sys.setdefaultencoding('utf8')
def get_song_rank_list(url, songs_time):
print("\n-------------Start---------------")
driver = webdriver.Chrome(
executable_path='./drv/chromedriver')
# https://sites.google.com/a/chromium.org/chromedriver/downloads chrome对应版本driver
driver.get(url)
driver.switch_to.frame('g_iframe')
wait = ui.WebDriverWait(driver, 15)
data = ""
song_dict = {}
if wait.until(lambda driver: driver.find_element_by_class_name('g-bd')):
if songs_time == 1:
driver.find_element_by_id('rHeader').find_element_by_id('songsall').click()
sleep(3)
data += driver.find_element_by_id('rHeader').find_element_by_tag_name('h4').text
print(data)
lists = driver.find_element_by_class_name('m-record').find_elements_by_tag_name('li')
print("Top{}:".format(len(lists)))
for l in lists:
name = (l.find_element_by_tag_name('b').text).decode("utf-8")
singer = (l.find_element_by_class_name('s-fc8').text.replace('-', '')).decode("utf-8")
times = l.find_element_by_class_name('bg').get_attribute('style')
song = "{}, {}, {}".format(name, singer, times)
print(song)
song_dict[name] = song
return song_dict
def compare_song(dict1, dict2):
print("\n--------------------------------")
print("\n---->Same song between us")
for name, song in dict1.iteritems():
if name in dict2:
print(song)
print("---->End")
print("\n--------------------------------")
SONGS_WEEK = 0
SONGS_ALL = 1
if __name__ == '__main__':
girl = get_song_rank_list("https://music.163.com/#/user/songs/rank?id=288007045", SONGS_ALL)
boy = get_song_rank_list("https://music.163.com/#/user/songs/rank?id=39661960", SONGS_ALL)
compare_song(girl, boy)
Console


【python爬虫】 爬云音乐我和xxx共同听过的歌曲的更多相关文章
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- 用Python爬虫爬取广州大学教务系统的成绩(内网访问)
用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- python爬虫爬取内容中,-xa0,-u3000的含义
python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310
- Python爬虫爬取一篇韩寒新浪博客
网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取 ...
- Python爬虫爬取全书网小说,程序源码+程序详细分析
Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...
- python爬虫—爬取英文名以及正则表达式的介绍
python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...
- 一个简单的python爬虫,爬取知乎
一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...
随机推荐
- axios 使用post方式传递参数,后端接收不到
最近做vue项目,做图片上传的功能,使用get给后台发送数据,后台能收到,使用post给后台发送图片信息的时候,vue axios post请求发送图片base64编码给后台报错HTTP 错误 414 ...
- checkBox复选框,获得选中那一行所有列的数据
function showCol(){ var check=$("input[name='one']:checked");//选中的复选框 check.each(function( ...
- *#【Python】【基础知识】【模块】【random】【使用random创造一个随机数】
Random介绍: 输出随机数. 快照: #!/usr/bin/python # -*- coding: UTF-8 -*- import random #生成 10 到 20 之间的随机数 prin ...
- JZOJ.1153【贪心算法】硬币交换
好难啊!!! 可聪明的我还是解出来了!(逃 题目描述 小z最近迷上了一款游戏――To Be A Farmer,他在游戏中控制的人物是一个叫FZ的Farmer.FZ身上有G1个金币.S1个银币和B1个铜 ...
- 适合新手的160个creakme(二)
先跑一下,然后找出关键字符串 关键字符串是You Get Wrong和Try Again,不过IDA好像识别不出来这个字符串,在Ollydbg中右键Search For,寻找所有字符串,可以找到这些字 ...
- command not found 的解决&&解释
ln -s /opt/platform/calico/calicoctl /usr/local/sbin/calicoctl ln -s /opt/platform/nginx/sbin/nginxl ...
- 社工工具包 SEToolkit
社会工程学(Social Engineering)简称社工,其通过分析攻击对象的心理弱点,利用人性的本能反应,以及任何好奇心,贪婪等心理特征进行的,使用诸如假冒,欺骗,引诱等多种手段来达成攻击目标的一 ...
- Scala学习十九——解析
一.本章要点 文法定义中的二选一.拼接.选项和重复在Scala组合子解析器中对应|.~.opt和rep 对于RegexParsers而言,字符串字面量和正则表达式匹配的是词法单元 用^^来处理解析结果 ...
- HTTP协议探究(二):代理、网关和隧道
一 复习与目标 1 复习 缓存目的:减轻服务器压力,不重复请求相同的内容 缓存位置:浏览器或中间代理 相关状态码:200或403 相关首部: etag和since-none-match.last-mo ...
- SpringCloud多网卡配置(转)
https://blog.csdn.net/lixiang987654321/article/details/88134324 docker部署过程中遇到如下问题: (1)docker容器创建之后,进 ...