1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 利用selinum爬取咪咕音乐歌单信息源代码分享

利用selinum爬取咪咕音乐歌单信息源代码分享

时间:2020-03-27 07:03:57

相关推荐

利用selinum爬取咪咕音乐歌单信息源代码分享

话不多说,直接上代码,咪咕音乐的网页相对简单比较容易爬取

这个代码只是比较粗糙的完成了爬取工作,还有很多未完善的地方,因为使用的是ChromeDriver,

我们可以直接看到浏览器操作,可以很容易查错

执行此代码前请保证已经安装了下列包及ChromeDriver应用程序

from selenium import webdriverfrom mon.exceptions import TimeoutExceptionfrom mon.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom bs4 import BeautifulSoupbrowser = webdriver.Chrome()wait=WebDriverWait(browser, 10)#歌单标题,url及播放量信息的爬取def search():try:browser.get('/v3')#查找歌单按钮submit_=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#header > div.sub-nav > div > ul.sub-nav-music.active-menu > li:nth-child(3) > a')))submit_.click()#查找总页数total_page=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#playlist > div.page > a:nth-child(6)')))pages=int(total_page.text)print("歌单共有{}页".format(pages))for i in range(1, total_page+1):print("这是第{}页".format(i))#确定该元素是否加载成功wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#playlist > div.song-list-cont > ul ')))#获取网页源代码data=browser.page_sourcebs = BeautifulSoup(data, 'lxml')#ba = bs.select('.thumb')print("这页有{}个歌单".format(len(ba)))for li in range(len(ba)):#获取歌单标题title = ba[li].find('div',class_='song-list-name').find('a').get('title')#获取歌单播放量bf=ba[li].find('div',class_='desc-text creatorName').text.strip()print(title,bf)browser.implicitly_wait(10)try:#实现翻页操作next_page=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#playlist > div.page > a.page-c.iconfont.cf-next-page'))) #这里没有去判断高亮处,因此使用了try,到时候再输出时能看到报错next_page.click()except:print("获取url失败,可能已经到最后一页")except TimeoutException:print("爬取数据失败")if __name__ == '__main__':search()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。