91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python抓取相關數據

發布時間:2021-11-23 14:31:59 來源:億速云 閱讀:155 作者:iii 欄目:大數據

本篇內容主要講解“如何用Python抓取相關數據”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何用Python抓取相關數據”吧!

數據爬取

巧婦難為無米之炊,做數據分析之前最重要的就是“數據獲取”。于是,我準備用Python爬取豆瓣上的短評數據以及一些評論時間信息、評價星級信息。

關于數據的爬取主要說以下幾個內容:

1)關于翻頁操作

第一頁:
https://movie.douban.com/subject/26413293/comments?status=P
第二頁:
https://movie.douban.com/subject/26413293/comments?start=20&limit=20&status=P&sort=new_score
第三頁:
https://movie.douban.com/subject/26413293/comments?start=40&limit=20&status=P&sort=new_score

上面我們分別展示了第1-3頁的頁面鏈接,我們主要是觀察其中的規律,其中start是獲取評論的起始位置,limit代表獲取多少條評論數據。觀察結果:3個鏈接的不同在于這個start的不同,在后續翻頁時,我們只需要修改start參數即可。

2)關于反扒說明

對于豆瓣的爬取,其實找到真實的短評鏈接,是極其容易的。但是這里有一點我必須說明,你可以不登陸爬取數據,但是只能是操作一段時間,過一段時間,會檢測到你是爬蟲。因此,你一定要登陸后,攜帶cookie去進行數據的爬取。如果你有時候不知道請求頭中,該放一些什么,那么就請都加上,等有空再慢慢總結。

 headers = {
    "Accept":"application/json, text/plain, */*",
    "Accept-Language":"zh-CN,zh;q=0.9",
    "Connection":"keep-alive",
    "Host":"movie.douban.com",
    "User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
    "Cookie":'這里是你自己的cookie'
    }

cookie有些人可能又不知道在哪里,還是告訴你一下吧!好多參數都在下面呢,如果你想學好爬蟲,那么這些參數代表什么,你總應該需要知道吧。

如何用Python抓取相關數據

最終再補充一點:我本來打算把豆瓣上的《大秦賦》短評,全部爬下來作為分析的素材。然而并沒有成功爬取到所有的短評,一波三折,最終只爬到了500條,當然我覺得這也是豆瓣的一種反扒措施,最大可見短評數就500條,多的不給你看。(有大神的話,可以下去研究一下)

數據處理

爬取后的數據,再怎么規整,也和用于分析的數據之間,有一定的差距。因此在分析之前,一定的數據清洗是很有必要的。在數據清洗之前,我們簡單看看數據是什么樣子的。

df = pd.read_csv("final_all_comment.csv",index_col=0)
df.head(10)

結果如下:

其實數據還是挺漂亮的,但是我們還是需要做如下處理:

1)剔除重復值

我們認為:如果'評論時間'和'評論內容'完全一致的話,就認為他是同一條評論,需要將其剔除。

print("刪除之前的記錄數:",df.shape)
df.drop_duplicates(subset=['評論時間','評論內容'],inplace=True,keep='first')
print("刪除之前的記錄數:",df.shape)

2)評論時間處理

因為《大秦賦》是2020年12月1號開播的,現在是12月16號晚,因此所有的評論數據肯定都是2020年12月開始有的,因此我們只保留有用的“日期”數據(哪一天)。而對于時分秒來說,我們只保留“小時”數據。

df["評論天數"] = df["評論時間"].str[8:-9].astype(int)
df["小時"] = df["評論時間"].str[11:-6].astype(int)

3)評論星級說明

觀察原頁面的評論星級,可以看到所有的星級并不是以數字展示的,而是用星星進行前端渲染出來的,但是頁面的源代碼,卻展示的是星級數。

如何用Python抓取相關數據

對應到頁面源代碼中,我們看看又是怎么樣子的呢?

可以看到:3星的數字是30,其它的以此類推,1星的數字是10,2星的數字是20......我看著就是很不爽,因此我在爬取數據的時候,已經將這些數字,全都除以10后計算。

4)評論內容機械壓縮去重

對于一條評論來說,有些人可能手誤,或者湊字數,會出現將某個字或者詞語,重復說多次,因此在進行分詞之前,需要做“機械壓縮去重”操作。下面是我很早之前寫的一段代碼,大家可以去看我的CSDN博客,里面有很好的解釋。

def func(st):
    for i in range(1,int(len(st)/2)+1):
        for j in range(len(st)):
            if st[j:j+i] == st[j+i:j+2*i]:
                k = j + i
                while st[k:k+i] == st[k+i:k+2*i] and k<len(st):   
                    k = k + i
                st = st[:j] + st[k:]    
    return st

st = "我愛你我愛你我愛你好你好你好哈哈哈哈哈"
func(st)

結果如下:

如何用Python抓取相關數據

利用上述函數,我們可以對爬取到的數據,應用此操作。

def func(st):
    for i in range(1,int(len(st)/2)+1):
        for j in range(len(st)):
            if st[j:j+i] == st[j+i:j+2*i]:
                k = j + i
                while st[k:k+i] == st[k+i:k+2*i] and k<len(st):   
                    k = k + i
                st = st[:j] + st[k:]    
    return st

df["評論內容"] = df["評論內容"].apply(func)

數據可視化操作

俗話說:“字不如表,表不如圖”。爬取到的數據,最終做可視化的呈現,才能夠讓大家對數據背后的規律,有一個清晰的認識。下面我們從以下幾個方面來進行數據可視化分析。

  1. 評論數隨時間的變化趨勢

  2. 二十四小時內的評論數的變化趨勢

  3. 星級評分的餅圖

  4. 大家主要都在評論一些啥

關于數據可視化工具,我就不用pyecharts了,我還是回歸原始,用最原始的matplotlib庫進行數據可視化的展示。畢竟我們沒有什么復雜的展示,代碼越簡短越好。

1)評論數隨時間的變化趨勢

從圖中可以看出:短評數量在12月4日之前,一直處于上升趨勢,在12月4日達到頂峰。和文章最開始的說明一致,前面幾天觀眾對于該劇的期待值較高,但是在12月4日后,突然出現斷崖式下降,說明隨著該劇的更新,大家有所失望了。

如何用Python抓取相關數據

3)星級評分的餅圖

劇究竟好不好,看看觀眾的評分少不了,這也是觀眾最直觀的想法。

  • 1星:很差

  • 2星:較差

  • 3星:還行

  • 4星:推薦

  • 1星:力薦

從下圖中可以看出:大家對于該劇的哦=評價還是很低的,1星和2星基本占據了整個餅圖,也就是說該劇并沒有得到大家的認可。

到此,相信大家對“如何用Python抓取相關數據”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仙居县| 广德县| 万山特区| 莱芜市| 金川县| 南涧| 永吉县| 榆中县| 渭源县| 鹤山市| 龙岩市| 芮城县| 镇坪县| 辉县市| 甘德县| 安徽省| 灌阳县| 南通市| 麻栗坡县| 樟树市| 盈江县| 长武县| 仪征市| 南丹县| 布尔津县| 武夷山市| 昌都县| 甘孜| 湘西| 临江市| 鞍山市| 阳原县| 航空| 轮台县| 曲松县| 永川市| 百色市| 祁东县| 富裕县| 大邑县| 平泉县|