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