婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python爬蟲分析匯總

Python爬蟲分析匯總

熱門標簽:沈陽防封電銷電話卡 萊蕪電信外呼系統 地圖標注多個 銀川電話機器人電話 鶴壁手機自動外呼系統違法嗎 企業微信地圖標注 怎么辦理400客服電話 B52系統電梯外呼顯示E7 高德地圖標注收入咋樣

Python爬蟲分析

前言:

計算機行業的發展太快了,有時候幾天不學習,就被時代所拋棄了,因此對于我們程序員而言,最重要的就是要時刻緊跟業界動態變化,學習新的技術,但是很多時候我們又不知道學什么好,萬一學的新技術并不會被廣泛使用,太小眾了對學習工作也幫助不大,這時候我們就想要知道大佬們都在學什么了,跟著大佬學習走彎路的概率就小很多了。現在就讓我們看看C站大佬們平時都收藏了什么,大佬學什么跟著大佬的腳步就好了!

一、程序說明

通過爬取 “CSDN” 獲取全站排名靠前的博主的公開收藏夾,寫入 csv 文件中,根據所獲取數據分析領域大佬們的學習趨勢,并通過可視化的方式進行展示。

二、數據爬取

使用 requests 庫請求網頁信息,使用 BeautifulSoup4 json 庫解析網頁。

1、獲取 CSDN 作者總榜數據

首先,我們需要獲取 CSDN 中在榜的大佬,獲取他/她們的相關信息。由于數據是動態加載的 (因此使用開發者工具,在網絡選項卡中可以找到請求的 JSON 數據:

觀察請求鏈接:

https://blog.csdn.net/phoenix/web/blog/all-rank?page=0pageSize=20
https://blog.csdn.net/phoenix/web/blog/all-rank?page=1pageSize=20
...

可以發現每次請求 JSON 數據時,會獲取20個數據,為了獲取排名前100的大佬數據,使用如下方式構造請求:

url_rank_pattern = "https://blog.csdn.net/phoenix/web/blog/all-rank?page={}pageSize=20"

for i in range(5):
    url = url_rank_pattern.format(i)
    #聲明網頁編碼方式
    response = requests.get(url=url, headers=headers)
    response.encoding = 'utf-8'
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')

請求得到 Json 數據后,使用 json 模塊解析數據(當然也可以使用 re 模塊,根據自己的喜好選擇就好了),獲取用戶信息,從需求上講,這里僅需要用戶 userName,因此僅解析 userName 信息,也可以根據需求獲取其他信息:

userNames = []
information = json.loads(str(soup))
for j in information['data']['allRankListItem']:
    # 獲取id信息
    userNames.append(j['userName'])

2、獲取收藏夾列表

獲取到大佬的 userName 信息后,通過主頁來觀察收藏夾列表的請求方式,本文以自己的主頁為例(給自己推廣一波),分析方法與上一步類似,在主頁中切換到“收藏”選項卡,同樣利用開發者工具的網絡選項卡:

觀察請求收藏夾列表的地址:

https://blog.csdn.net/community/home-api/v1/get-favorites-created-list?page=1size=20noMore=falseblogUsername=LOVEmy134611

可以看到這里我們上一步獲取的 userName 就用上了,可以通過替換 blogUsername 的值來獲取列表中大佬的收藏夾列表,同樣當收藏夾數量大于20時,可以通過修改 page 值來獲取所有收藏夾列表:

collections = "https://blog.csdn.net/community/home-api/v1/get-favorites-created-list?page=1size=20noMore=falseblogUsername={}"
for userName in userNames:
    url = collections.format(userName)
    #聲明網頁編碼方式
    response = requests.get(url=url, headers=headers)
    response.encoding = 'utf-8'
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')

請求得到 Json 數據后,使用 json 模塊解析數據,獲取收藏夾信息,從需求上講,這里僅需要收藏夾 id,因此僅解析 id 信息,也可以根據需求獲取其他信息(例如可以獲取關注人數等信息,找到最受歡迎的收藏夾):

file_id_list = []
information = json.loads(str(soup))
# 獲取收藏夾總數
collection_number = information['data']['total']
# 獲取收藏夾id
for j in information['data']['list']:
    file_id_list.append(j['id'])

這里大家可能會問,現在 CSDN 不是有新舊兩種主頁么,請求方式能一樣么?答案是:不一樣,在瀏覽器端進行訪問時,舊版本使用了不同的請求接口,但是我們同樣可以使用新版本的請求方式來進行獲取,因此就不必區分新、舊版本的請求接口了,獲取收藏數據時情況也是一樣的。

3、獲取收藏數據

最后,單擊收藏夾展開按鈕,就可以看到收藏夾中的內容了,然后同樣利用開發者工具的網絡選項卡進行分析:

觀察請求收藏夾的地址:

https://blog.csdn.net/community/home-api/v1/get-favorites-item-list?blogUsername=LOVEmy134611folderId=9406232page=1pageSize=200

可以看到剛剛獲取的用戶 userName 和收藏夾 id 就可以構造請求獲取收藏夾中的收藏信息了:

file_url = "https://blog.csdn.net/community/home-api/v1/get-favorites-item-list?blogUsername={}folderId={}page=1pageSize=200"
for file_id in file_id_list:
    url = file_url.format(userName,file_id)
    #聲明網頁編碼方式
    response = requests.get(url=url, headers=headers)
    response.encoding = 'utf-8'
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')

最后用 re 模塊解析:

    user = user_dict[userName]
    user = preprocess(user)
    # 標題
    title_list  = analysis(r'"title":"(.*?)",', str(soup))
    # 鏈接
    url_list = analysis(r'"url":"(.*?)"', str(soup))
    # 作者
    nickname_list = analysis(r'"nickname":"(.*?)",', str(soup))
    # 收藏日期
    date_list = analysis(r'"dateTime":"(.*?)",', str(soup))
    for i in range(len(title_list)):
        title = preprocess(title_list[i])
        url = preprocess(url_list[i])
        nickname = preprocess(nickname_list[i])
        date = preprocess(date_list[i])

4、爬蟲程序完整代碼

import time
import requests
from bs4 import BeautifulSoup
import os
import json
import re
import csv

if not os.path.exists("col_infor.csv"):
    #創建存儲csv文件存儲數據
    file = open('col_infor.csv', "w", encoding="utf-8-sig",newline='')
    csv_head = csv.writer(file)
    #表頭
    header = ['userName','title','url','anthor','date']
    csv_head.writerow(header)
    file.close()

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}

def preprocess(string):
    return string.replace(',',' ')

url_rank_pattern = "https://blog.csdn.net/phoenix/web/blog/all-rank?page={}pageSize=20"

userNames = []
user_dict = {}
for i in range(5):
    url = url_rank_pattern.format(i)
    #聲明網頁編碼方式
    response = requests.get(url=url, headers=headers)
    response.encoding = 'utf-8'
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')
    information = json.loads(str(soup))
    for j in information['data']['allRankListItem']:
        # 獲取id信息
        userNames.append(j['userName'])
        user_dict[j['userName']] = j['nickName']

def get_col_list(page,userName):
    collections = "https://blog.csdn.net/community/home-api/v1/get-favorites-created-list?page={}size=20noMore=falseblogUsername={}"
    url = collections.format(page,userName)
    #聲明網頁編碼方式
    response = requests.get(url=url, headers=headers)
    response.encoding = 'utf-8'
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')
    information = json.loads(str(soup))
    return information

def analysis(item,results):
    pattern = re.compile(item, re.I|re.M)
    result_list = pattern.findall(results)
    return result_list

def get_col(userName, file_id, col_page):
    file_url = "https://blog.csdn.net/community/home-api/v1/get-favorites-item-list?blogUsername={}folderId={}page={}pageSize=200"
    url = file_url.format(userName,file_id, col_page)
    #聲明網頁編碼方式
    response = requests.get(url=url, headers=headers)
    response.encoding = 'utf-8'
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')
    user = user_dict[userName]
    user = preprocess(user)
    # 標題
    title_list  = analysis(r'"title":"(.*?)",', str(soup))
    # 鏈接
    url_list = analysis(r'"url":"(.*?)"', str(soup))
    # 作者
    nickname_list = analysis(r'"nickname":"(.*?)",', str(soup))
    # 收藏日期
    date_list = analysis(r'"dateTime":"(.*?)",', str(soup))
    for i in range(len(title_list)):
        title = preprocess(title_list[i])
        url = preprocess(url_list[i])
        nickname = preprocess(nickname_list[i])
        date = preprocess(date_list[i])
        if title and url and nickname and date:
            with open('col_infor.csv', 'a+', encoding='utf-8-sig') as f:
                f.write(user + ',' + title + ',' + url + ',' + nickname + ',' + date  + '\n')

    return information

for userName in userNames:
    page = 1
    file_id_list = []
    information = get_col_list(page, userName)
    # 獲取收藏夾總數
    collection_number = information['data']['total']
    # 獲取收藏夾id
    for j in information['data']['list']:
        file_id_list.append(j['id'])
    while collection_number > 20:
        page = page + 1
        collection_number = collection_number - 20
        information = get_col_list(page, userName)
        # 獲取收藏夾id
        for j in information['data']['list']:
            file_id_list.append(j['id'])
    collection_number = 0

    # 獲取收藏信息
    for file_id in file_id_list:
        col_page = 1
        information = get_col(userName, file_id, col_page)
        number_col = information['data']['total']
        while number_col > 200:
            col_page = col_page + 1
            number_col = number_col - 200
            get_col(userName, file_id, col_page)
    number_col = 0

5、爬取數據結果

展示部分爬取結果:

三、數據分析及可視化

最后使用 wordcloud 庫,繪制詞云展示大佬收藏。

from os import path
from PIL import Image
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud, STOPWORDS
import pandas as pd
import matplotlib.ticker as ticker
import numpy as np
import math
import re

df = pd.read_csv('col_infor.csv', encoding='utf-8-sig',usecols=['userName','title','url','anthor','date'])

place_array = df['title'].values
place_list = ','.join(place_array)
with open('text.txt','a+') as f:
    f.writelines(place_list)

###當前文件路徑
d = path.dirname(__file__)

# Read the whole text.
file = open(path.join(d, 'text.txt')).read()
##進行分詞
#停用詞
stopwords = ["的","與","和","建議","收藏","使用","了","實現","我","中","你","在","之"]
text_split = jieba.cut(file)  # 未去掉停用詞的分詞結果   list類型

#去掉停用詞的分詞結果  list類型
text_split_no = []
for word in text_split:
    if word not in stopwords:
        text_split_no.append(word)
#print(text_split_no)

text =' '.join(text_split_no)
#背景圖片
picture_mask = np.array(Image.open(path.join(d, "path.jpg")))
stopwords = set(STOPWORDS)
stopwords.add("said")
wc = WordCloud(  
    #設置字體,指定字體路徑
    font_path=r'C:\Windows\Fonts\simsun.ttc', 
    # font_path=r'/usr/share/fonts/wps-office/simsun.ttc', 
    background_color="white",   
    max_words=2000,   
    mask=picture_mask,  
    stopwords=stopwords)  
# 生成詞云
wc.generate(text)

# 存儲圖片
wc.to_file(path.join(d, "result.jpg"))

到此這篇關于Python爬蟲分析匯總的文章就介紹到這了,更多相關Python爬蟲內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 關于python爬蟲應用urllib庫作用分析
  • python爬蟲Scrapy框架:媒體管道原理學習分析
  • python爬蟲Mitmproxy安裝使用學習筆記
  • Python爬蟲和反爬技術過程詳解
  • python爬蟲之Appium爬取手機App數據及模擬用戶手勢
  • 爬蟲Python驗證碼識別入門
  • Python爬蟲技術
  • Python爬蟲爬取商品失敗處理方法
  • Python獲取江蘇疫情實時數據及爬蟲分析
  • Python爬蟲之Scrapy環境搭建案例教程
  • Python爬蟲中urllib3與urllib的區別是什么
  • 教你如何利用python3爬蟲爬取漫畫島-非人哉漫畫

標簽:烏魯木齊 葫蘆島 湘西 安慶 三亞 銀川 呼倫貝爾 呼倫貝爾

巨人網絡通訊聲明:本文標題《Python爬蟲分析匯總》,本文關鍵詞  Python,爬蟲,分析,匯總,Python,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python爬蟲分析匯總》相關的同類信息!
  • 本頁收集關于Python爬蟲分析匯總的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩五月天| 国产99久久久精品| 亚洲日本va午夜在线影院| 久久久久97国产精华液好用吗| 欧美一区永久视频免费观看| 欧美日韩电影在线播放| 欧美日韩一区二区三区不卡 | 自拍偷拍国产亚洲| 中文字幕亚洲欧美在线不卡| 自拍偷拍国产精品| 亚洲国产成人va在线观看天堂| 亚洲va韩国va欧美va精品| 日韩电影免费在线观看网站| 久久国产精品72免费观看| 国产在线播精品第三| 成人午夜在线免费| 91女厕偷拍女厕偷拍高清| 欧美日韩国产大片| 日韩精品一区二区三区在线| 国产欧美一区二区精品忘忧草| 椎名由奈av一区二区三区| 夜夜嗨av一区二区三区网页 | 日本不卡不码高清免费观看| 蜜臀久久99精品久久久画质超高清 | 亚洲第一激情av| 琪琪久久久久日韩精品| 成人免费毛片app| 欧美亚洲一区三区| 久久亚洲精品国产精品紫薇| 亚洲色大成网站www久久九九| 免费观看在线综合| 不卡一区中文字幕| 日韩一级片在线播放| 一区在线中文字幕| 九色综合国产一区二区三区| 色综合久久久久久久久久久| 精品三级av在线| 洋洋成人永久网站入口| 狠狠色丁香久久婷婷综合_中 | 91久久免费观看| 欧美岛国在线观看| 亚洲一区二区三区四区在线观看| 久久精品国产一区二区三区免费看| av电影在线观看不卡| 欧美变态凌虐bdsm| 亚洲成人自拍一区| 色综合久久综合| 国产欧美一区二区精品性| 久久福利视频一区二区| 91成人在线精品| 一区精品在线播放| 成人性生交大合| 欧美mv日韩mv| 麻豆91在线看| 欧美美女直播网站| 亚洲一区成人在线| 一本大道久久a久久精二百| 欧美精品一区二区蜜臀亚洲| 日韩成人精品视频| 欧美日韩高清一区二区不卡 | 国产日韩精品一区二区三区 | 欧美国产精品久久| 国产在线一区二区综合免费视频| 欧美一区二区三区在线观看| 亚洲影院理伦片| 欧美无砖砖区免费| 午夜精品久久一牛影视| 欧美三片在线视频观看| 亚洲一区二区免费视频| 欧美中文一区二区三区| 亚洲国产成人porn| 欧美久久久久久久久| 视频一区二区欧美| 欧美一区三区二区| 国精产品一区一区三区mba视频| 欧美va亚洲va在线观看蝴蝶网| 麻豆精品国产91久久久久久| 欧美成人一区二区三区在线观看| 美女国产一区二区三区| 久久久久久久久久久久久久久99 | 色婷婷久久一区二区三区麻豆| 亚洲欧洲韩国日本视频| 日本久久精品电影| 亚洲国产综合人成综合网站| 欧美三级电影一区| 免费成人深夜小野草| 精品福利一区二区三区免费视频| 国产一区二区三区精品欧美日韩一区二区三区 | 玉足女爽爽91| 欧美日韩精品欧美日韩精品一综合| 亚洲va韩国va欧美va| 日韩精品资源二区在线| 国产激情视频一区二区在线观看| 中文欧美字幕免费| 欧美午夜一区二区| 韩国女主播成人在线| 国产精品久久久久影视| 欧美亚洲综合色| 国产精品一二二区| 一区二区国产盗摄色噜噜| 欧美一卡2卡三卡4卡5免费| 国产成人免费在线| 亚洲国产精品综合小说图片区| 精品福利视频一区二区三区| 91香蕉国产在线观看软件| 日韩中文字幕亚洲一区二区va在线 | 色婷婷av一区二区三区软件 | 国产高清无密码一区二区三区| 日韩美女久久久| 91精品国产黑色紧身裤美女| 成人99免费视频| 美女网站在线免费欧美精品| 国产精品视频看| 日韩欧美国产一区二区在线播放 | 亚洲成va人在线观看| 久久免费午夜影院| 91精品国产综合久久香蕉麻豆| 不卡一区在线观看| 精品在线一区二区三区| 亚洲裸体xxx| 日本一区二区久久| 精品美女在线播放| 正在播放一区二区| 91搞黄在线观看| 成人av手机在线观看| 国产精品一区二区免费不卡| 午夜精品久久久| 亚洲视频免费观看| 欧美国产激情二区三区| 久久久九九九九| 精品播放一区二区| 91精品欧美一区二区三区综合在 | 91麻豆成人久久精品二区三区| 国模娜娜一区二区三区| 蜜桃精品视频在线观看| 日韩av一级片| 日韩成人dvd| 日本不卡一区二区三区高清视频| 亚洲国产精品久久人人爱蜜臀| 亚洲欧美欧美一区二区三区| 国产精品日产欧美久久久久| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 久久精品国产精品青草| 免费欧美日韩国产三级电影| 日本亚洲视频在线| 日本sm残虐另类| 青青草成人在线观看| 青青草精品视频| 极品尤物av久久免费看| 国内精品嫩模私拍在线| 国产精品白丝av| 不卡视频免费播放| 在线观看视频一区二区欧美日韩| 一本在线高清不卡dvd| 欧美色图一区二区三区| 欧美日韩精品一区视频| 欧美一个色资源| 欧美精品一区二区精品网| 久久久久久久久久久黄色| 国产精品人妖ts系列视频| 亚洲欧美一区二区久久| 午夜精品久久久久久久99樱桃| 奇米777欧美一区二区| 国产激情91久久精品导航| 99久久久久久99| 欧美日韩精品欧美日韩精品一| 日韩色视频在线观看| 日本一区二区在线不卡| 亚洲欧洲三级电影| 视频一区在线视频| 国产激情一区二区三区桃花岛亚洲| 成人黄色av电影| 欧美美女bb生活片| 久久久久国产精品麻豆ai换脸| 中文字幕一区二| 三级欧美在线一区| 成人激情午夜影院| 91精品婷婷国产综合久久性色| 国产欧美精品区一区二区三区 | 精品国产免费一区二区三区香蕉| 日本一区二区免费在线观看视频| 亚洲伊人伊色伊影伊综合网| 久久国产视频网| 色综合天天综合网天天狠天天| 日韩一区二区三区观看| 中文字幕欧美日韩一区| 日韩电影一二三区| 色综合欧美在线| 久久久夜色精品亚洲| 视频一区国产视频| 91老司机福利 在线| 久久精品亚洲麻豆av一区二区| 亚洲电影欧美电影有声小说| 成人在线一区二区三区| 日韩欧美高清dvd碟片| 亚洲综合区在线| 91在线观看一区二区| 精品国产露脸精彩对白| 日韩成人一级大片| 91福利在线导航|