国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

瀏覽:117日期:2022-06-27 17:25:39
一、網(wǎng)址分析

查閱了網(wǎng)上的大部分資料,大概都是通過(guò)抓包獲取。但是抓包有點(diǎn)麻煩,嘗試了F12,也可以獲取到評(píng)論。以電視劇《在一起》為例子。評(píng)論最底端有個(gè)查看更多評(píng)論猜測(cè)過(guò)去應(yīng)該是 Ajax 的異步加載。網(wǎng)上的大部分都是構(gòu)建評(píng)論的網(wǎng)址,通過(guò) requests 獲取,正則表達(dá)式進(jìn)行數(shù)據(jù)處理。本文也利用該方法進(jìn)行數(shù)據(jù)處理,其實(shí)利用 scrapy 會(huì)更簡(jiǎn)單。根據(jù)前輩給出的經(jīng)驗(yàn),順利找到了評(píng)論所在的鏈接。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

在新標(biāo)簽中打開(kāi),該網(wǎng)址的鏈接。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

評(píng)論都在'content':'xxxxx'里面,所有可以通過(guò)正則表達(dá)式獲取。那么現(xiàn)在要開(kāi)始構(gòu)建網(wǎng)址,找到其規(guī)律。在查找評(píng)論鏈接的過(guò)程中無(wú)意發(fā)現(xiàn),點(diǎn)擊影評(píng)旁邊的評(píng)論總數(shù),可以獲取到更為干凈的評(píng)論界面。結(jié)果是一樣的。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

既然是要爬取所有的評(píng)論,所以知道評(píng)論數(shù)是必不可少的。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

再通過(guò)F12獲取到評(píng)論鏈接,找到網(wǎng)址的規(guī)律,構(gòu)建網(wǎng)址,加載三四個(gè)評(píng)論就行了。這里加載了四個(gè)網(wǎng)址。把所有網(wǎng)址復(fù)制到文本文件中,進(jìn)行對(duì)比分析。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

觀察發(fā)現(xiàn)只有 cursor 和 source 進(jìn)行了改變,其他是不變的,二 source 是在第一個(gè)的基礎(chǔ)上進(jìn)行加一操作,所以只需要獲取到 cursor 即可。我們打開(kāi)一個(gè)評(píng)論鏈接的網(wǎng)址,我們可以知道,cursor 其實(shí)是上一頁(yè) 最后一個(gè)用戶的ID碼。所以我們只需要在爬取上一頁(yè)的時(shí)候一起爬蟲(chóng)了。然后就可以構(gòu)建網(wǎng)址。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

二、代碼編寫(xiě)

這個(gè)代碼還是簡(jiǎn)單的。套用之前上課做的模板就可以直接進(jìn)行爬蟲(chóng)了。通過(guò)正則表達(dá)式獲取評(píng)論,返回一個(gè)列表;正則表達(dá)式獲得的 cursor 碼是列表,所以要轉(zhuǎn)化為字符串使用;source 很簡(jiǎn)單了,直接在上一個(gè)的基礎(chǔ)上加一即可。

def getComment(html): # 爬取單頁(yè)評(píng)論 findeComment = re.compile(r’'content':'(.*?)'’, re.S) comment = re.findall(findeComment, html) # print(comment) return commentdef getCursor(html): # 獲取下一頁(yè)的cursor碼 findeCursor = re.compile(r’'last':'(.*?)'’, re.S) cursor = re.findall(findeCursor, html)[0] # print(cursor) return cursordef getSource(source): # 獲取下一頁(yè)的source碼 source = int(source) + 1 return str(source)

有點(diǎn)難度的可能就送弄代理吧,但是代理可以模仿網(wǎng)上其他人的寫(xiě)法,所以還是不是很難。

#添加用戶代理def ua(uapools): thisua = random.choice(uapools) # print(thisua) headers = ('User-Agent', thisua) opener = urllib.request.build_opener() opener.addheaders = [headers] # 設(shè)置為全局變量 urllib.request.install_opener(opener)三、遇到的問(wèn)題1. 獲取評(píng)論的時(shí)候也將子評(píng)論爬蟲(chóng)進(jìn)去了。

仔細(xì)查看了源碼,發(fā)現(xiàn)評(píng)論主要在 data 下面的 oriCommList 列表里,其他范圍的評(píng)論為子評(píng)論。個(gè)人認(rèn)為子評(píng)論也算有效評(píng)論,目前不打算處理。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

2. 獲取全部評(píng)論數(shù),直接通過(guò) requests 獲取不到

嘗試了 xpath 和 requests 發(fā)現(xiàn)不能獲取全部評(píng)論數(shù),所以目前只能通過(guò) selenium 獲取,但是 selenium 效率太低了,就獲取一個(gè)評(píng)論總數(shù),還不如打開(kāi)源碼直接修改評(píng)論總數(shù),所以暫時(shí)沒(méi)有修改

3. 評(píng)論總數(shù)數(shù)據(jù)太大

因?yàn)橹芭老x(chóng)過(guò)很多網(wǎng)站,同一個(gè) user-agent 很容易被 ban ,所以目前構(gòu)建了用戶代理,然后進(jìn)行隨機(jī)。其實(shí)還想加一個(gè) ip 代理的,但是使用了 ip 代理的網(wǎng)址,上面寫(xiě)的正常的 ip ,在使用的時(shí)候,拒絕連接。也嘗試過(guò)構(gòu)建代理池。但是代理池一般都是使用docker 和 Redis 進(jìn)行獲取。暫時(shí)沒(méi)有選用,之選用了用戶代理,然后在獲取 headers 的時(shí)候加個(gè) time.sleep(1)。目前還是正常的。

4. 報(bào)錯(cuò)’utf-8’ codec can’t decode byte 0xff in position 1: invalid start byte

遇到這個(gè)問(wèn)題,實(shí)在無(wú)語(yǔ),我懷疑后面的評(píng)論是新出的 emjoy,然后utf-8不能識(shí)別,程序掛掉了。但是選取其他格式,在解釋的過(guò)程估計(jì)還會(huì)掛掉,就暫時(shí)爬到1萬(wàn)條吧。

python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟

四、完整代碼

代碼倉(cāng)庫(kù)

以上就是python 爬取騰訊視頻評(píng)論的實(shí)現(xiàn)步驟的詳細(xì)內(nèi)容,更多關(guān)于python 爬取騰訊視頻評(píng)論的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: 騰訊 視頻 Python
相關(guān)文章:
主站蜘蛛池模板: 叙永县| 彩票| 晋城| 含山县| 平潭县| 高尔夫| 焦作市| 庆城县| 大兴区| 海安县| 韩城市| 济南市| 抚顺县| 蒲江县| 南和县| 久治县| 诸暨市| 镇远县| 同心县| 博湖县| 宽甸| 秦安县| 怀柔区| 南木林县| 青田县| 上蔡县| 永兴县| 伊川县| 吉安市| 福清市| 巴林左旗| 乌鲁木齐市| 苏尼特左旗| 昌江| 金坛市| 高台县| 内乡县| 武隆县| 基隆市| 行唐县| 石狮市|