【Python爬虫实战】使用Selenium爬某音乐歌曲及评论信息啦~
前言
嘿嘿!我回來(lái)啦~(叭蟲(chóng)審查特別嚴(yán)格哭唧唧.jpg)
但是我們公眾號(hào)可以啊!試試看能過(guò)不!爬蟲(chóng)系列也要支棱起來(lái)——
有喜歡聽(tīng)歌的小可愛(ài)嘛?沒(méi)有也沒(méi)關(guān)系,我們來(lái)學(xué)習(xí)一下技術(shù),哈哈哈
本文適合對(duì)爬蟲(chóng)相關(guān)知識(shí)接觸不多的新手,主要是普及Selenium如何做爬蟲(chóng),大佬的話可以跳一跳啦!正文
一、Selenium簡(jiǎn)單介紹
1)簡(jiǎn)介
Selenium是一個(gè)用于測(cè)試網(wǎng)站的自動(dòng)化測(cè)試工具,支持各種主流界面瀏覽器。
簡(jiǎn)而言之,Selenium是一個(gè)用來(lái)做網(wǎng)站自動(dòng)化測(cè)試的庫(kù),它的定位是做自動(dòng)化測(cè)試的。我們也可
以利用它來(lái)做爬蟲(chóng),獲取一些網(wǎng)頁(yè)信息,并且這種爬蟲(chóng)是模擬真實(shí)瀏覽器操作的,實(shí)用性更強(qiáng)。
Selenium是市面上唯一一款可以與付費(fèi)產(chǎn)品競(jìng)爭(zhēng)的自動(dòng)化測(cè)試工具。
如果想了解更多,可以前往Selenium中文網(wǎng)學(xué)習(xí)。
2)安裝
要使用Selenium首先要在python中安裝相關(guān)的庫(kù):
pip install Selenium安裝相應(yīng)瀏覽器的webdricer驅(qū)動(dòng)文件,這里提供chrome的鏈接,其它瀏覽器網(wǎng)上搜一搜就有。
下載解壓后得到exe文件,將這個(gè)文件拷貝到chrom的安裝文件夾下:
一般是C:\Program?Files?(x86)\Google\Chrome\Application,或者是
C:\Program?Files\Google\Chrome\Application。
然后將該路徑配置到環(huán)境變量中:
最后到寫(xiě)段代碼測(cè)試一下:
from selenium import webdriverdriver=webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") 如果看到開(kāi)啟了一個(gè)瀏覽器窗口就是成功了,否則下面會(huì)有相應(yīng)的報(bào)錯(cuò)信息,需要檢查前面的步驟。
三、代碼展示
from selenium import webdriver import csvfrom time import sleep import time#1.創(chuàng)建Chrome瀏覽器對(duì)象,這會(huì)在電腦上在打開(kāi)一個(gè)瀏覽器窗口 driver=webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")#2.打開(kāi)QQ音樂(lè) -周杰倫頁(yè)面 driver.get("https://y.qq.com/n/yqq/singer/001t94rh4OpQn0.html")#3.配置 csv_file = open('songs1.csv','w',newline='',encoding='utf-8') writer = csv.writer(csv_file) start = time.time() # 取前5首歌曲 song_numer=5 song_url_list=[] song_resourses=[]songlist__item=driver.find_elements_by_class_name("songlist__item") # 獲取所有歌曲url for song in songlist__item:song__url=song.find_element_by_class_name("js_song").get_attribute("href")song_url_list.append(song__url)song_numer-=1if(song_numer==0):break # print(song_url_list) print("已獲取當(dāng)前歌手熱門(mén)歌曲列表前五首的url") print()# 獲取一首歌曲所需要的信息 def getSongResourse(url):song_resourse={}driver.get(url)# 這個(gè)1.8秒用于等待頁(yè)面所有異步請(qǐng)求的完成sleep(1.8)# 獲取歌曲名song_name=driver.find_element_by_class_name("data__name_txt").textprint("開(kāi)始獲取歌曲《"+song_name+"》的基本信息")# 獲取流派,發(fā)行時(shí)間,評(píng)論數(shù)song_liupai = driver.find_element_by_css_selector(".js_genre").text[3:]song_time = driver.find_element_by_css_selector(".js_public_time").text[5:]song_comment_num = driver.find_element_by_css_selector(".js_into_comment").text[3:-1]print("歌曲《" + song_name + "》基本信息獲取完畢")print("開(kāi)始獲取歌曲《" + song_name + "》的歌詞")# 點(diǎn)擊展開(kāi)歌詞driver.find_element_by_partial_link_text("[展開(kāi)]").click()sleep(0.3)lyic=""# 獲取拼接歌詞lyic_box=driver.find_element_by_id("lrc_content").find_elements_by_tag_name("p")for l in lyic_box:if l.text!="":lyic+=l.text+"\n"print("歌曲《" + song_name + "》的歌詞獲取完畢")print("開(kāi)始獲取歌曲《" + song_name + "》的第1-15條熱門(mén)評(píng)論")# 獲取500條評(píng)論comments=[]# 點(diǎn)擊加載更多29次,每次多出15條評(píng)論for i in range(33):try:driver.find_element_by_partial_link_text("點(diǎn)擊加載更多").click()except:breakprint("開(kāi)始獲取歌曲《" + song_name + "》的第"+str((i+1)*15+1)+"-"+str((i+2)*15)+"條熱門(mén)評(píng)論")sleep(0.5)comments_list=driver.find_element_by_css_selector(".js_hot_list").find_elements_by_tag_name("li")for com in comments_list:content=com.find_element_by_css_selector(".js_hot_text").textcontent_time=com.find_element_by_css_selector(".comment__date").textzan_num=com.find_element_by_class_name("js_praise_num").textcomment = {}comment.update({"評(píng)論內(nèi)容":content})comment.update({"評(píng)論時(shí)間":content_time})comment.update({"評(píng)論點(diǎn)贊次數(shù)":zan_num})comments.append(comment)print("歌曲《" + song_name + "》的前五百條熱門(mén)評(píng)論獲取完畢")print("歌曲《"+song_name+"》所有信息獲取完畢")print()song_resourse.update({"歌曲名":song_name})song_resourse.update({"流派":song_liupai})song_resourse.update({"發(fā)行時(shí)間":song_time})song_resourse.update({"評(píng)論數(shù)":song_comment_num})song_resourse.update({"歌詞":lyic})song_resourse.update({"500條精彩評(píng)論":comments})return song_resoursefor song_page in song_url_list:song_resourses.append(getSongResourse(song_page)) print("正在寫(xiě)入CSV文件...") for i in song_resourses:writer.writerow([i["歌曲名"],i["流派"],i["發(fā)行時(shí)間"],i["評(píng)論數(shù)"],i["歌詞"]])for j in i["500條精彩評(píng)論"]:writer.writerow([j["評(píng)論內(nèi)容"],j["評(píng)論時(shí)間"],j["評(píng)論點(diǎn)贊次數(shù)"]])writer.writerow([]) csv_file.close() end = time.time() print("爬取完成,總耗時(shí)"+str(end-start)+"秒")四、效果展示
總結(jié)
好啦結(jié)束結(jié)束,有問(wèn)題可以直接找我溝通的啦👇
?完整的素材源碼等:可以滴滴我吖!或者點(diǎn)擊文末hao自取免費(fèi)拿的哈~
😘往期推薦閱讀——
項(xiàng)目0.1??【Python爬蟲(chóng)系列】Python爬蟲(chóng)入門(mén)并不難,甚至入門(mén)也很簡(jiǎn)單(引言)項(xiàng)目0.2
項(xiàng)目0.3???Python爬蟲(chóng)入門(mén)推薦案例:學(xué)會(huì)爬蟲(chóng)_表情包手到擒來(lái)~
項(xiàng)目0.4?【Tkinter界面化小程序】用Python做一款免費(fèi)音樂(lè)下載器、無(wú)廣告無(wú)彈窗、清爽超流暢哦
項(xiàng)目0.5??【Python爬蟲(chóng)系列】淺嘗一下爬蟲(chóng)40例實(shí)戰(zhàn)教程+源代碼【基礎(chǔ)+進(jìn)階】
🎁文章匯總——
Python文章合集 | (入門(mén)到實(shí)戰(zhàn)、游戲、Turtle、案例等)
(文章匯總還有更多你案例等你來(lái)學(xué)習(xí)啦~源碼找我即可免費(fèi)!)
總結(jié)
以上是生活随笔為你收集整理的【Python爬虫实战】使用Selenium爬某音乐歌曲及评论信息啦~的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: std::string的resize()
- 下一篇: 软件工程师 VS 硬件工程师