亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python 爬蟲(chóng)技術(shù)的QQ 空間說(shuō)說(shuō)的爬取

        2020-10-30 05:49:20趙子欽
        科學(xué)技術(shù)創(chuàng)新 2020年31期
        關(guān)鍵詞:爬蟲(chóng)網(wǎng)址瀏覽器

        趙子欽

        (太原理工大學(xué)大數(shù)據(jù)學(xué)院,山西 太原030000)

        隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,QQ 空間作為虛擬信息交流場(chǎng)所,愈來(lái)愈成為人們自我視界里廣泛使用的一種社交工具。人們青睞于QQ 空間說(shuō)說(shuō)以文字語(yǔ)言形式記錄生活點(diǎn)滴,抒發(fā)個(gè)人情懷,自我心跡表露,與朋友互動(dòng)寫(xiě)留言,進(jìn)行自我彰顯,社會(huì)輿情傳遞等等,從而成為QQ 說(shuō)說(shuō)用戶(hù)鮮活明亮的歲月留痕和見(jiàn)證成長(zhǎng)的精神空間。隨著時(shí)間的推移,用戶(hù)說(shuō)說(shuō)條目不斷增多,說(shuō)說(shuō)所涉及的范圍也更加廣袤,層級(jí)紛繁多樣,內(nèi)容也包羅萬(wàn)象。當(dāng)人們想要在眾多說(shuō)說(shuō)條目下找到某一條或某一類(lèi)說(shuō)說(shuō)內(nèi)容時(shí),可能會(huì)比較困難。

        大數(shù)據(jù)時(shí)代的到來(lái)和網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的應(yīng)用,為采集和挖掘目標(biāo)數(shù)據(jù)提供了可能并轉(zhuǎn)化為現(xiàn)實(shí)。通過(guò)web 爬蟲(chóng)網(wǎng)絡(luò)技術(shù),把網(wǎng)頁(yè)上的數(shù)據(jù)下載到本地?cái)?shù)據(jù)庫(kù),從而方便對(duì)目標(biāo)信息的查找和有效提取利用。結(jié)合Python 技術(shù),可以實(shí)現(xiàn)對(duì)QQ 空間說(shuō)說(shuō)的爬取。

        論文使用的平臺(tái)是Anaconda3,瀏覽器為火狐瀏覽器:Mozilla Firefox-70 版本,瀏覽器驅(qū)動(dòng)為:geckodriver-0.24.0 版本。通過(guò)selenium 庫(kù)中的webdriver 實(shí)現(xiàn)從瀏覽器完全模擬人直接登錄訪問(wèn)QQ 空間。針對(duì)登錄產(chǎn)生的權(quán)限問(wèn)題,使用webdriver中g(shù)et_cookies()函數(shù),將登錄cookie 獲取保存。然后通過(guò)cookie來(lái)構(gòu)造一個(gè)session, 結(jié)合查看網(wǎng)頁(yè)請(qǐng)求網(wǎng)址獲取含有空間說(shuō)說(shuō)的網(wǎng)頁(yè)。為了便于查看,可以通過(guò)json.loads()函數(shù)把內(nèi)容轉(zhuǎn)化為JS 格式。將抓取的網(wǎng)絡(luò)頁(yè)面形成隊(duì)列,并通過(guò)對(duì)比發(fā)現(xiàn)每個(gè)網(wǎng)頁(yè)地址特定參數(shù)的區(qū)別,確定循環(huán)對(duì)象,最后使用for 循環(huán)和while 循環(huán)把空間說(shuō)說(shuō)的內(nèi)容爬取至本地。

        1 相關(guān)技術(shù)分析

        1.1 Python 網(wǎng)絡(luò)爬蟲(chóng)原理

        Python 是一種面向?qū)ο蟮挠?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,內(nèi)置有豐富的數(shù)據(jù)類(lèi)型來(lái)表示函數(shù)、模塊、對(duì)象、運(yùn)行時(shí)的信息等,有著簡(jiǎn)單的說(shuō)明文檔,運(yùn)行速度快,可用作圖形、數(shù)字、文本處理,因此用Python 寫(xiě)簡(jiǎn)單爬蟲(chóng)獲取數(shù)據(jù)庫(kù)的信息,為人們?cè)诤A啃畔⒅蝎@取目標(biāo)內(nèi)容提供更加方便快捷的功能。

        網(wǎng)絡(luò)爬蟲(chóng)屬于一種自動(dòng)檢索工具,就是通過(guò)網(wǎng)絡(luò)搜索主題,遍歷網(wǎng)頁(yè)內(nèi)容,根據(jù)某個(gè)網(wǎng)站的分析算法和既定的抓取目標(biāo),過(guò)濾掉無(wú)關(guān)鏈接和大量用戶(hù)不關(guān)心的網(wǎng)頁(yè),有選擇的訪問(wèn)相關(guān)網(wǎng)頁(yè)和相關(guān)鏈接,將其放置在一個(gè)隊(duì)列被爬取,從而用戶(hù)能夠很方便的獲取所需要的信息內(nèi)容。

        1.2 登錄處理

        1.2.1 處理登錄表單

        處理登錄表單可以分為兩步:第一步是分析網(wǎng)站的登錄表單,構(gòu)造具有POST 請(qǐng)求的參數(shù)字典。第二步是提交POST 請(qǐng)求。

        1.2.2 處理cookies

        爬取說(shuō)說(shuō),首先要登錄QQ 空間,為了避免每次爬取說(shuō)說(shuō)時(shí)需要登錄這樣的麻煩,可以利用seesion 保存的cookies 信息。

        1.3 動(dòng)態(tài)網(wǎng)頁(yè)爬取

        真實(shí)地址爬取:盡管數(shù)據(jù)沒(méi)有出現(xiàn)在網(wǎng)頁(yè)源代碼中,但可以找到數(shù)據(jù)的真實(shí)地址,請(qǐng)求得到真實(shí)地址可以獲得想要的數(shù)據(jù)。這里用到瀏覽器“查看元素”的功能。

        步驟:(1)將QQ 空間登陸頁(yè)面網(wǎng)址在Firefox 瀏覽器打開(kāi),右擊頁(yè)面,點(diǎn)擊“查看元素”,打開(kāi)開(kāi)發(fā)者工具。(2)找到真實(shí)的數(shù)據(jù)地址。點(diǎn)擊開(kāi)發(fā)者工具頁(yè)面窗口,選擇“網(wǎng)絡(luò)”選項(xiàng),刷新頁(yè)面。這時(shí),“網(wǎng)絡(luò)”會(huì)顯示瀏覽器從Web 服務(wù)器獲取的所有文件,目標(biāo)數(shù)據(jù)就在其中。(3)爬取真實(shí)說(shuō)說(shuō)數(shù)據(jù)地址。獲取了地址,繼而使用requests 請(qǐng)求網(wǎng)頁(yè),獲取網(wǎng)頁(yè)地址中的數(shù)據(jù)。(4)一般獲得的結(jié)果較為復(fù)雜,這些是JS 數(shù)據(jù),我們可以使用json 庫(kù)解析數(shù)據(jù),從中提取想要的數(shù)據(jù)。

        1.4 Session

        這里最重要的一個(gè)變量是requests 庫(kù)的Session 函數(shù),可以幫助我們維持一個(gè)會(huì)話,還可以自動(dòng)處理Cookies,令我們不再擔(dān)心cookies 問(wèn)題。

        2 爬蟲(chóng)模型的設(shè)計(jì)

        2.1 庫(kù)的導(dǎo)入與變量賦值

        2.1.1 導(dǎo)入模型所需庫(kù):json、requests、selenium 中的webdriver。導(dǎo)入程序如圖1 所示:

        圖1 導(dǎo)入庫(kù)

        2.1.2 先將qq 賬號(hào)和密碼分別賦予變量user、pw。程序如圖2 所示:

        圖2 變量賦值

        2.2 模擬登錄的實(shí)現(xiàn)

        2.2.1 為了實(shí)現(xiàn)瀏覽器模擬登錄,先轉(zhuǎn)到QQ 空間登錄頁(yè)面,driver = webdriver.Firefox(),driver.get(“http://i.qq.com”),右擊,選擇登錄框,driver.switch_to.frame(“l(fā)ogin_frame”)。選擇登錄框、獲取登錄框位置如圖3 所示:

        圖3 尋找登錄框

        2.2.2 模擬瀏覽器點(diǎn)擊選擇到“賬號(hào)密碼登錄”,driver.find_element_by_id(“switcher_plogin”).click()。選擇賬號(hào)密碼登錄如圖4 所示:

        圖4 選擇賬號(hào)密碼登錄框

        2.2.3 選擇點(diǎn)擊填寫(xiě)賬號(hào)(密碼)框,并將qq 賬號(hào)(user)、密碼(pw)填寫(xiě)進(jìn)去,driver.find_element_by_id(“u”).send_keys(user)driver.find_element_by_id(“p”).send_keys(pw)。填寫(xiě)結(jié)果如圖5、圖6 所示:

        圖5 選擇輸入賬號(hào)框

        圖6 輸入密碼框

        2.2.4 點(diǎn)擊登錄按鈕進(jìn)行登錄(手動(dòng)驗(yàn)證)driver.find_element_by_id(“l(fā)ogin_button”).click()。選擇點(diǎn)擊登錄按鈕框如圖7 所示:

        圖7 登錄框

        2.3 cookies 及真實(shí)地址的獲取

        2.3.1 登錄成功之后,使用selenium 得到cookies,并將其保存至“cookies.txt”文件。函數(shù)代碼如圖8 所示:

        2.3.2 登錄到主頁(yè)后,為了獲取到說(shuō)說(shuō)頁(yè)面的真實(shí)地址,查看頁(yè)面“查看元素”,觀察網(wǎng)絡(luò)欄,由于第一頁(yè)內(nèi)容含有其他元素,不易查找,所以,下拉動(dòng)態(tài)加載完畢后,將網(wǎng)絡(luò)中請(qǐng)求網(wǎng)址全部清空。之后再點(diǎn)擊說(shuō)說(shuō)的“第二頁(yè)”,“網(wǎng)絡(luò)”中出現(xiàn)的第一個(gè)請(qǐng)求網(wǎng)址即為說(shuō)說(shuō)的真實(shí)網(wǎng)址。獲取到真實(shí)地址如圖9 所示:

        圖9 獲取到真實(shí)地址

        2.4 免密登錄及處理分析數(shù)據(jù)

        2.4.1 將真實(shí)網(wǎng)址在瀏覽器中打開(kāi),分析后可知所需數(shù)據(jù)的范圍為[10:-2]。如圖10 所示:

        圖10 黑框部分不做選取

        2.4.2 為了實(shí)現(xiàn)說(shuō)說(shuō)的真實(shí)網(wǎng)址的免密登錄,定義此函數(shù),利用保存的cookies 使其返回一個(gè)賦予cookies 的JS 對(duì)象的網(wǎng)頁(yè)。函數(shù)代碼如圖11 所示:

        圖11 免密登錄函數(shù)

        2.4.3 利用獲取真實(shí)地址的方法,得到第三頁(yè)的網(wǎng)址。比較兩個(gè)真實(shí)網(wǎng)址,發(fā)現(xiàn)“pos”的值不同,第二頁(yè)中的pos 值為20,第三頁(yè)為40......由此可知,第一頁(yè)pos 值為0,每翻一頁(yè),pos 值自增20。所以可以將得到的真實(shí)網(wǎng)址url 分解為2 部分:

        url_1 = 'https://user.qzone.qq.com......&pos='

        url_2 = '&num=20&c......282c2d39d'

        通過(guò)循環(huán)可以循環(huán)遍歷到每一頁(yè)。

        使用json.loads()函數(shù),進(jìn)行查看,可以得知,每條說(shuō)說(shuō)的的信息都在'msglist'中,其中,說(shuō)說(shuō)內(nèi)容為“content”,發(fā)表時(shí)間為“creatTime”。內(nèi)容的信息如圖12 所示:

        圖12 JS 信息

        現(xiàn)在需要討論何時(shí)終止循環(huán),不難發(fā)現(xiàn),當(dāng)pos 的值超出可讀取的網(wǎng)頁(yè)時(shí),'msglist'=None。

        由此,'msglist' = none 作為停止循環(huán)的條件是可行的。如圖13 所示:

        圖13 停止循環(huán)條件

        2.5 信息的爬取

        定義函數(shù),遍歷輸出每一頁(yè)說(shuō)說(shuō)的內(nèi)容,當(dāng)‘msglist’為空時(shí),返回‘1’,不為空時(shí),將其中的內(nèi)容“content”,發(fā)表時(shí)間“creatTime”打印輸出到文件,并返回‘0’。函數(shù)代碼如圖14 所示:

        圖14 定義獲取說(shuō)說(shuō)函數(shù)

        調(diào)用上述函數(shù),函數(shù)返回“1”時(shí),停止循環(huán),返回'0'時(shí),進(jìn)行“翻頁(yè)”操作。當(dāng)所有操作完成后,打印出“Down”,表明程序運(yùn)行結(jié)束。如圖15 所示:

        圖15 程序代碼

        3 程序運(yùn)行結(jié)果

        依次運(yùn)行程序后,見(jiàn)到打印出的“Down”。如圖16 所示:

        圖16 運(yùn)行完畢

        最后,打開(kāi)在python 工作目錄中生成的“qqss.txt”文件,可以看到爬取的說(shuō)說(shuō)內(nèi)容及發(fā)表時(shí)間。如圖17 所示:

        圖17 爬取結(jié)果

        4 結(jié)論

        利用Python 語(yǔ)言進(jìn)行爬蟲(chóng)程序設(shè)計(jì)是大數(shù)據(jù)時(shí)代下實(shí)現(xiàn)數(shù)據(jù)采集的重要渠道。本文以爬取QQ 空間說(shuō)說(shuō)為例,介紹了一種爬取說(shuō)說(shuō)數(shù)據(jù)的爬蟲(chóng)程序設(shè)計(jì),為用戶(hù)對(duì)說(shuō)說(shuō)條目進(jìn)行聚類(lèi)、篩選或獲得目標(biāo)數(shù)據(jù)提供便利。設(shè)計(jì)過(guò)程中對(duì)于滿(mǎn)足用戶(hù),快速訪問(wèn)的QQ 空間問(wèn)題仍有進(jìn)一步改進(jìn)空間。例如:在實(shí)現(xiàn)模擬登錄時(shí),需要人工手動(dòng)拖拽拼圖驗(yàn)證,這樣無(wú)法徹底實(shí)現(xiàn)自動(dòng)化驗(yàn)證碼識(shí)別,速度較慢。可以采用設(shè)置被拖拽拼圖的CSS 屬性或模擬拖動(dòng)的方法,全程自動(dòng)化無(wú)需人工參與進(jìn)而提升爬取速度。同樣,還可以利用此技術(shù)在互聯(lián)網(wǎng)絡(luò)爬取其他目標(biāo)數(shù)據(jù),縮短查詢(xún)信息的時(shí)間,獲取相關(guān)有價(jià)值數(shù)據(jù),提高工作效率。

        猜你喜歡
        爬蟲(chóng)網(wǎng)址瀏覽器
        2023年6月全宅影音器材編輯推薦
        利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
        本刊網(wǎng)址變更通知
        基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
        反瀏覽器指紋追蹤
        電子制作(2019年10期)2019-06-17 11:45:14
        利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        環(huán)球?yàn)g覽器
        再見(jiàn),那些年我們嘲笑過(guò)的IE瀏覽器
        本刊網(wǎng)址變更通知
        欧洲熟妇色xxxx欧美老妇多毛 | 日本一区二区三区激情视频| 国产精品污一区二区三区在线观看 | 亚洲男人天堂2019| 亚洲欧洲日产国码无码av野外| 91久久精品美女高潮喷白浆| 国产一区二区三区久久精品| 国产亚洲av综合人人澡精品| 99热成人精品国产免| 在线高清亚洲精品二区| 最新欧美精品一区二区三区| 欧美猛男军警gay自慰| 欧美xxxx新一区二区三区| 青青草视频网站免费看| 公和我做好爽添厨房| 乱人伦中文无码视频| 国产精品九九久久一区hh| 丰满少妇av一区二区三区| 天天做天天添av国产亚洲| 国产自国产在线观看免费观看| 精品国产1区2区3区AV| 手机在线免费观看av不卡网站| 国产人妻熟女高跟丝袜图片| 亚洲AV无码一区二区三区日日强| 亚洲av午夜福利精品一区二区| 精品国产日韩一区2区3区| 熟妇激情内射com| 亚洲AV毛片无码成人区httP| 蜜桃人妻午夜精品一区二区三区| 天天躁夜夜躁狠狠是什么心态| 久久久久久久久888| 亚洲色欲色欲www成人网| 一区二区三区国产色综合| 无码丰满熟妇一区二区| 免费毛片视频网站| 国产精品日本一区二区三区在线| 亚洲国产精品成人久久| 香蕉视频www.5.在线观看| 久久精品国产亚洲av桥本有菜| 免费亚洲一区二区三区av| 国产精品久久久久久久免费看|