tft每日頭條

 > 健康

 > 爬蟲心得體會

爬蟲心得體會

健康 更新时间:2024-07-28 16:19:32

爬蟲心得體會(爬蟲實戰8w網友親身體驗)1

學習!學習!!學習!!!學習之外目的到此為止!

上東東的時候,突然給我彈了一個的廣告,于是就點進去就看了一下評論,全是神評論啊。所以我就想着把大神們的評論們扒拉下來仔細瞅瞅,于是這篇文章就誕生了 ,純屬學習啊,不要想入非非啊,還有,不喜勿噴!

爬蟲心得體會(爬蟲實戰8w網友親身體驗)2

首先我先找了某東最火娃娃,裡面評論8w 條,這裡面神評論一定不少。所以決定從這個裡面扒拉我們想要獲取的數據

爬蟲心得體會(爬蟲實戰8w網友親身體驗)3

因為一些網站不喜歡外界的爬蟲消耗自己的服務器的大量資源,因此它們會有自己反爬蟲程序。如果不使用代理的話,他們就能識别出你是爬蟲,從而給你進行重定向無數次,導緻你的爬蟲報錯。所以我們要對我們的爬蟲進行僞裝。

爬蟲心得體會(爬蟲實戰8w網友親身體驗)4

那就需要帶上我們的防爬header三兄弟了。當然這隻是最基本的防爬措施。更多的反爬措施和技巧可以參考曾經它讓我惱怒抓狂,但是現在我對它是贊不絕口!

cookie - 側重于用戶的類型,這裡具體指的就是登錄的用戶呢還是遊客

refer - 指的是用戶從哪個頁面發出網絡的訪問和數據的請求

user-agent 指的是訪問後台服務器的是哪一個浏覽器

首先找到咱們防止反爬的必須參數。

爬蟲心得體會(爬蟲實戰8w網友親身體驗)5

在獲取數據的時候把它們加在header裡面就可以獲取到非空數據了。

接下來咱們先試試。

爬蟲心得體會(爬蟲實戰8w網友親身體驗)6

可以看到我們已經成功地獲取到數據了。但是數據格式還需要進一步的處理。首先咱們來分析一下獲取到的數據。

獲取到的數據前面多了20位的'fetchJSON_comment98(',後面多了四位的']}'。所以我們首先要去掉這些多餘的修飾符使之成為完成的json格式的數據。

json_data = response.text[20:-2]

再來看看運行結果:

爬蟲心得體會(爬蟲實戰8w網友親身體驗)7

好了,已經初步實現了我們的目标。因為在咱們的目标隻是評論而無需其他的參數。所以現在去網頁分析一下這些評論所在的位置。

爬蟲心得體會(爬蟲實戰8w網友親身體驗)8

可以看到我們想要的評論内容是在comments下面的content中,所以我們首先定位到comments中然後循環獲取content裡面的内容。

爬蟲心得體會(爬蟲實戰8w網友親身體驗)9

for comment in comments_all: print(comment['content'])

爬蟲心得體會(爬蟲實戰8w網友親身體驗)10

好了我們現在已經成功的獲取到了第一頁的内容,後面的評論需要進行翻頁操作,所以我們多翻幾頁找規律。

爬蟲心得體會(爬蟲實戰8w網友親身體驗)11

pageSize=10每頁固定顯示10條記錄。

不同之處就在于這個參數page,所以可以确定頁數是由它來控制的。所謂以我們可以設置一個變量來控制它,從而獲取到全部頁數的評論。

對get_spider_comments方法加入變量page,當我們指定page的值時,它就可以獲取固定頁面的評論。

在batch_spider_comments方法中sleep方法,用來模拟用戶浏覽,防止因為爬取太頻繁導緻ip被封。

for i in range(100): print('正在爬取' str(i 1) '頁數據....') get_spider_comments(i) #批量獲取評論方法 print('爬蟲結束!')

可以成功的獲取到所要爬取的頁數的全部數據!

爬蟲心得體會(爬蟲實戰8w網友親身體驗)12

接下來咱們爬取數據的任務已經結束了。現在呢我想通過詞雲可視化分析一下它火的原因。

for comment in comments_all: with open(comments_file_path, 'a ', encoding='utf-8') as f: f.write(comment['content'] '\n')

接下來看一下我們寫入到文件的内容

爬蟲心得體會(爬蟲實戰8w網友親身體驗)13

需要通過詞雲分析時就需要數據,所以我們需要把獲取到的評論先放存入文檔,這裡為了方便我就直接放入txt文檔了。

首先需要我們對jieba和wordcloud進行了解,使用pip install jieba對jieba庫進行安裝。然後用jieba對獲取到的評論進行分詞。

with open(comments_file_path, encoding = 'utf-8') as fin: comment_text = fin.read() word_list = jieba.lcut_for_search(comment_text) new_word_list = ' '.join(word_list)

來看效果

爬蟲心得體會(爬蟲實戰8w網友親身體驗)14

然後使用pip install wordcloud再安裝wordcloud。最後用generate方法生成詞雲圖。

好了接下來我們就需要找一張自己心儀的圖片來做分詞操作了。

所以之後大家可以按照自己的意願來設置圖片的形狀。

我選了一張萌萌哒的小狗的圖片。我在這裡引入了imageio的 imread方法 以獲取原始圖片dog.jpg的參數

然後使用mask=mask 傳遞形狀參數,所以最後我們獲取到的就是一張圓形的詞雲圖

爬蟲心得體會(爬蟲實戰8w網友親身體驗)15

def create_word_cloud(): mask = imread('dog.jpg') wordcloud = WordCloud(font_path='msyh.ttc', mask = mask).generate(cut_words()) wordcloud.to_file('dog.png')

來看看實現詞雲效果之後的小狗圖

爬蟲心得體會(爬蟲實戰8w網友親身體驗)16

爬蟲心得體會(爬蟲實戰8w網友親身體驗)17

好了目标已經實現。源碼尚在整理中,想要學習的可以直接找我哦!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关健康资讯推荐

热门健康资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved