【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

pic
pic


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM