Python爬蟲實戰(zhàn)(3)selenium完成瀑布流數(shù)據(jù)爬取

前言

  • 蛋肥已基本掌握頁碼分頁類型的數(shù)據(jù)爬取炕舵,這次嘗試對“查看更多”瀑布流分頁類型的數(shù)據(jù)進行爬取。

準備

爬取時間:2021/01/27
系統(tǒng)環(huán)境:Windows 10
所用工具:Jupyter Notebook\Python 3.0
涉及的庫:selenium\time\pandas\matplotlib\jieba\stylecloud

獲取基礎(chǔ)數(shù)據(jù)

蛋肥想法:借助selenium跟畅,實現(xiàn)對“查看更多”的自動點擊咽筋,目標是獲取2020年的文章相關(guān)數(shù)據(jù)。

36氪|職場資訊
https://36kr.com/information/web_zhichang
參考資料
安裝chromedriver
Selenium元素定位的30種方式
Selenium處理js行為的方法
Selenium之定位相同元素的第二個元素

from selenium import webdriver
import time

def getinfo():
    driver=webdriver.Chrome(executable_path=r"C:\Users\Archer\AppData\Local\Google\Chrome\Application\chromedriver")
    driver.get("https://36kr.com/information/web_zhichang")
    #循環(huán)點擊查看更多按鈕徊件,直到日期出現(xiàn)2019
    while (driver.find_elements_by_xpath('//span[@class="kr-flow-bar-time"]')[-1].text)>"2019-12-31":
        element=driver.find_element_by_xpath('//div[@class="kr-loading-more-button show"]')
        driver.execute_script("arguments[0].click();",element)
        time.sleep(1)
    #獲取文章相關(guān)元素
    title_list=driver.find_elements_by_xpath('//a[@class="article-item-title weight-bold"]')
    author_list=driver.find_elements_by_xpath('//a[@class="kr-flow-bar-author"]')
    date_list=driver.find_elements_by_xpath('//span[@class="kr-flow-bar-time"]')
    #獲取元素文本內(nèi)容
    target_list=[]
    for i in range(len(title_list)):
        target=[title_list[i].text,author_list[i].text,date_list[i].text]
        target_list.append(target)
    return(target_list)
    #完成后退出驅(qū)動
    driver.quit()

#執(zhí)行函數(shù)
info=getinfo()

數(shù)據(jù)預(yù)處理

蛋肥想法:36氪的數(shù)據(jù)很滿足強迫癥奸攻,沒有空格換行,只需篩選出2020年的數(shù)據(jù)保存虱痕。

import pandas as pd 
#篩選2020年的數(shù)據(jù)并保存
df=pd.DataFrame(info,columns=["題目","作者","日期"])
df_final=df[(df["日期"]<="2020-12-31")&(df["日期"]>"2019-12-31")]
df_final.to_excel(r"C:\Users\Archer\Desktop\爬取數(shù)據(jù).xlsx",index=False)
保存到本地的部分數(shù)據(jù)

數(shù)據(jù)可視化

蛋肥想法:此次重點是學習selenium睹耐,所以只簡單做一下數(shù)據(jù)可視化。

import matplotlib.pyplot as plt

#畫圖四件套:顯示部翘、矢量疏橄、中文、負號
%matplotlib inline
%config InlineBackend.figure_format="svg"
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

繪制作者發(fā)文量TOP10

#作者發(fā)文量TOP10
df_read=df_final.groupby("作者").count().sort_values("題目")[-10:]

#繪制畫布
plt.figure(figsize=(10,8))
#繪制作者-發(fā)文量TOP10
plt.subplot(1,1,1)
plt.title("作者發(fā)文量TOP10",fontsize=15)  
x=list(df_read.index)
y=list(df_read["題目"])
plt.barh(x,y)
for a,b in zip(x,y):
    plt.text(b,a,b,ha="left",va="center",fontsize=10)
#隱藏xticks略就,節(jié)約空間
plt.xticks([])

#保存圖片
plt.savefig(r"C:\Users\Archer\Desktop\作者發(fā)文量TOP10.png",bbox_inches="tight")

繪制題目熱詞詞云

import jieba
from stylecloud import gen_stylecloud

#去掉中文停用詞
textc=list(df_final["題目"])
file_stop=open(r"C:\Users\Archer\Desktop\stop.txt","r",encoding='utf-8')
textstop=[x.replace("\n","") for x in list(file_stop)] 
file_stop.close()
for i in range(len(textc)):
    for j in range(len(textstop)):
        textc[i]=textc[i].replace(textstop[j],"")

#保存成txt
file=open(r"C:\Users\Archer\Desktop\題目詞云.txt","a+",encoding='utf-8')
for i in range(len(textc)):
    s=str(textc[i])
    file.write(s)
file.close()

#直接復(fù)制詞云代碼捎迫,icon_name對應(yīng)詞云輪廓,palette對應(yīng)配色
def jieba_cloud(file_name):
    with open(file_name,'r',encoding='utf8') as f:
        word_list = jieba.cut(f.read())
        result = " ".join(word_list)
        #制作中文云詞
        gen_stylecloud(text=result,palette='tableau.BlueRed_6',icon_name='fas fa-comment',font_path='C:\\Windows\\Fonts\\simhei.ttf',output_name=file_name.split('.')[0] + '.png')       
if __name__ == "__main__":
    file_name = r"C:\Users\Archer\Desktop\題目詞云.txt"
    jieba_cloud(file_name)

總結(jié)

  • selenium大法好啊表牢,有很多想象空間窄绒。
  • ⊙△⊙?好像可以用selenium來打卡給崔兴。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彰导,一起剝皮案震驚了整個濱河市蛔翅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌位谋,老刑警劉巖山析,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掏父,居然都是意外死亡笋轨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門赊淑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爵政,“玉大人,你說我怎么就攤上這事陶缺〖匦” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵饱岸,是天一觀的道長掺出。 經(jīng)常有香客問我,道長苫费,這世上最難降的妖魔是什么汤锨? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮黍衙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荠诬。我一直安慰自己琅翻,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布柑贞。 她就那樣靜靜地躺著方椎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钧嘶。 梳的紋絲不亂的頭發(fā)上棠众,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音有决,去河邊找鬼闸拿。 笑死,一個胖子當著我的面吹牛书幕,可吹牛的內(nèi)容都是我干的新荤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼台汇,長吁一口氣:“原來是場噩夢啊……” “哼苛骨!你這毒婦竟也來了篱瞎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤痒芝,失蹤者是張志新(化名)和其女友劉穎俐筋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體严衬,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡澄者,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞳步。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闷哆。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖单起,靈堂內(nèi)的尸體忽然破棺而出抱怔,到底是詐尸還是另有隱情,我是刑警寧澤嘀倒,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布屈留,位于F島的核電站,受9級特大地震影響测蘑,放射性物質(zhì)發(fā)生泄漏灌危。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一碳胳、第九天 我趴在偏房一處隱蔽的房頂上張望勇蝙。 院中可真熱鬧忍疾,春花似錦舶替、人聲如沸倚舀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驮宴。三九已至掐松,卻和暖如春附帽,著一層夾襖步出監(jiān)牢的瞬間夕土,已是汗流浹背馆衔。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留怨绣,地道東北人角溃。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像篮撑,于是被迫代替她去往敵國和親开镣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容