日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫综合大作业(震惊!爬取了590位微信好友后竟然发现了)

發布時間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫综合大作业(震惊!爬取了590位微信好友后竟然发现了) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作業要求來自https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159

?

可以用pandas讀出之前保存的數據:見上次博客爬取全部的校園新聞并保存csv

newsdf = pd.read_csv(r'F:\duym\gzccnews.csv')

?

?

?

一.把爬取的內容保存到數據庫sqlite3

import sqlite3
with sqlite3.connect('gzccnewsdb.sqlite') as db:
newsdf.to_sql('gzccnews',con = db)

with sqlite3.connect('gzccnewsdb.sqlite') as db:
df2 = pd.read_sql_query('SELECT * FROM gzccnews',con=db)

?

保存到MySQL數據庫

  • import pandas as pd
  • import pymysql
  • from sqlalchemy import create_engine
  • conInfo = "mysql+pymysql://user:passwd@host:port/gzccnews?charset=utf8"
  • engine = create_engine(conInfo,encoding='utf-8')
  • df = pd.DataFrame(allnews)
  • df.to_sql(name = ‘news', con = engine, if_exists = 'append', index = False)

成功保存:

?

1 newsdf = pd.read_csv(r'C:\Users\Czc\PycharmProjects\news.csv') 2 3 import sqlite3 4 ''' 5 with sqlite3.connect('gzccnewsdb.sqlite') as db: 6 newsdf.to_sql('gzccnews',con = db) 7 ''' 8 with sqlite3.connect('gzccnewsdb.sqlite') as db: 9 df2 = pd.read_sql_query('SELECT * FROM gzccnews',con=db) 10 11 12 import pymysql 13 from sqlalchemy import create_engine 14 coninfo = "mysql+pymysql://root:@localhost:3306/gzccnews?charset=utf8" 15 engine = create_engine(coninfo,encoding="utf-8") 16 17 newsdf.to_sql(name='news',con=engine,if_exists='append',index= False,index_label='id') View Code

?


?

二.爬蟲綜合大作業

  • 選擇一個熱點或者你感興趣的主題。
  • 選擇爬取的對象與范圍。
  • 了解爬取對象的限制與約束。
  • 爬取相應內容。
  • 做數據分析與文本分析。
  • 形成一篇文章,有說明、技術要點、有數據、有數據分析圖形化展示與說明、文本分析圖形化展示與說明。
  • 文章公開發布。
  • ?

    參考:

    32個Python爬蟲項目

    都是誰在反對996?

    Python和Java薪資最高,C#最低!

    給《流浪地球》評1星的都是什么心態?

    《都挺好》彈幕數據,比劇情還精彩?

    爬了自己的微信好友,原來他們是這樣的人……

    春節人口遷徙大數據報告!

    七夕前消費趨勢數據

    爬了一下天貓上的Bra購買記錄,有了一些羞羞噠的發現...

    Python做了六百萬字的歌詞分析,告訴你中國Rapper都在唱些啥

    分析了42萬字歌詞后,終于搞清楚民謠歌手唱什么了

    十二星座的真實面目

    唐朝詩人之間的關系到底是什么樣的?

    中國姓氏排行榜

    ?

    三.爬蟲注意事項

    1.設置合理的爬取間隔,不會給對方運維人員造成壓力,也可以防止程序被迫中止。

    • import time
    • import random
    • time.sleep(random.random()*3)

    2.設置合理的user-agent,模擬成真實的瀏覽器去提取內容。

  • 首先打開你的瀏覽器輸入:about:version。
  • 用戶代理:
  • 收集一些比較常用的瀏覽器的user-agent放到列表里面。
  • 然后import random,使用隨機獲取一個user-agent
  • 定義請求頭字典headers={’User-Agen‘:}
  • 發送request.get時,帶上自定義了User-Agen的headers
  • ?

    3.需要登錄

    發送request.get時,帶上自定義了Cookie的headers

    headers={’User-Agen‘:??

    'Cookie':? ? }

    ?

    4.使用代理IP

    通過更換IP來達到不斷高 效爬取數據的目的。

    headers = {

    ??? "User-Agent": "",

    }

    proxies = {

    ??? "http": " ",

    ??? "https": " ",

    }

    response = requests.get(url, headers=headers, proxies=proxies)

    ?


    ?

    python大作業之--使用python爬取微信好友

    01 準備工作

    運行平臺:Windows 10
    Python版本:Python3.7

    ?

    首先登陸python版本微信itchat,生成二維碼掃描登陸獲取微信好友列表

    然后統計好友男女數量并打印輸出

    接著使用matplotlib繪圖

    輸出結果可以我的微信好友男女比例大概五五開,即使是在男女37開的學校,說明我微信里的女生數比較少,有待加強。

    接著獲取微信好友的信息

    ?

    ?

    統計好友所在城市信息并繪圖輸出

    ?

    輸出結果可以看出廣州的好友占了大多數,因為是在廣州上的大學,所以身邊大多數都是廣州的吧,還有比較多的城市的就是汕尾了,因為老家在汕尾,所以汕尾的人數也達到了45,緊接著就深圳等大城市了。

    根據獲取到的微信好友個性簽名畫詞云

    ?

    ?輸出結果可以看出我微信好友的個性簽名比較勵志正常的,像努力,時間,開心,自己,平安等,另外廣商也是一大特征。

    ?完整代碼:

    1 # -*- coding: utf-8 -*- 2 3 import numpy as np 4 import itchat 5 import matplotlib.pyplot as plt 6 # 登錄微信,會彈出二維碼,用手機微信掃一掃即可登錄 7 itchat.login() 8 # 獲取好友的所有數據 9 friends = itchat.get_friends(update=True)[0:] 10 11 # ***-----統計好友性別比例-----*** 12 # 初始化計數器 13 male = female = other = 0 14 # friends[0]是自己的信息,因此從friends[1]開始 15 for i in friends[1:]: 16 sex = i['Sex'] 17 if sex == 1: 18 male += 1 19 elif sex == 2: 20 female += 1 21 else: 22 other += 1 23 # 計算朋友總數 24 total = len(friends[1:]) 25 # 打印輸出好友性別比例 26 print( 27 "男性好友: %.2f%%" % (float(male)/total * 100) + "\n" + 28 "女性好友: %.2f%%" % (float(female)/total * 100) + "\n" + 29 "不明性別好友: %.2f%%" % (float(other)/total * 100) 30 ) 31 32 33 # 進行繪圖 34 label_name = ["Boy", "Girl", "Unknown"] 35 gender_list = [male, female, other] 36 plt.figure() 37 plt.bar(range(len(gender_list)), gender_list, tick_label=label_name) 38 39 # 繪圖中文顯示設置 40 plt.rcParams['font.sans-serif']=['SimHei'] 41 plt.rcParams['axes.unicode_minus']=False 42 43 plt.xlabel(u'性別') 44 plt.ylabel(u'人數') 45 plt.title(u'好友性別比例') 46 47 # 在柱狀圖上顯示數字 48 x=np.arange(3) 49 y=np.array(gender_list) 50 for a,b in zip(x,y): 51 plt.text(a, b+0.1, '%.2f' % b, ha='center', va= 'bottom',fontsize=12) 52 53 54 # ***-----獲取各類信息-----*** 55 # 定義函數,爬取所有好友的指定信息 56 def get_var(var): 57 variable = [] 58 for i in friends[1:]: 59 value = i[var] 60 variable.append(value) 61 return variable 62 63 # 調用函數,得到對應信息,并存入csv文件,保存到桌面 64 NickName = get_var("NickName") 65 Sex = get_var("Sex") 66 Province = get_var("Province") 67 City = get_var("City") 68 Signature = get_var("Signature") 69 70 # Excel 打開中文亂碼問題 未解決 71 # 不過可以通過Excel->數據->文本導入的形式,將csv文件導入,就可以避免亂碼問題 72 from pandas import DataFrame 73 74 data = {"NickName": NickName, "Sex": Sex, "Province": Province, 75 "City": City, "Signature": Signature} 76 frame = DataFrame(data) 77 frame.to_csv('data.csv', encoding='utf_8_sig', index=True) 78 79 # ***-----統計好友城市分布-----*** 80 city_dict = {} 81 x_city = [] 82 y_city = [] 83 for city_name in City: 84 if city_name in city_dict: 85 city_dict[city_name] += 1 86 else: 87 city_dict[city_name] = 1 88 city_list = sorted(city_dict.items(), key=lambda item:item[1], reverse=True) 89 # 將前14個城市排序顯示,去除排名第一的未知城市(城市信息為空的好友) 90 for i in city_list[1:15]: 91 x_city.append(i[0]) 92 y_city.append(i[1]) 93 plt.figure() 94 plt.bar(range(len(x_city)), y_city, tick_label=x_city) 95 plt.xlabel(u'城市') 96 plt.ylabel(u'人數') 97 plt.title(u'好友城市分布') 98 # 在柱狀圖上顯示數字 99 x=np.arange(len(x_city)) 100 y=np.array(y_city) 101 for a,b in zip(x,y): 102 plt.text(a, b+0.06, '%.2f' % b, ha='center', va='bottom', fontsize=9) 103 104 # ***-----根據個性簽名繪制詞云圖-----*** 105 # 通過正則匹配清洗數據 106 import re 107 Signature_list = [] 108 for i in friends: 109 signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "") 110 rep = re.compile("lf\d+\w*|[<>/=]") 111 signature = rep.sub("", signature) 112 Signature_list.append(signature) 113 text = "".join(Signature_list) 114 # 調包進行分詞 115 import jieba 116 wordlist = jieba.cut(text, cut_all=False) 117 word_space_split = " ".join(wordlist) 118 # 調包進行詞云圖繪制 119 from wordcloud import WordCloud, ImageColorGenerator 120 import PIL.Image as Image 121 coloring = np.array(Image.open("czc.jpg")) 122 my_wordcloud = WordCloud(background_color="white", max_words=200, 123 mask=coloring, max_font_size=70, random_state=42, scale=2, 124 font_path="C:\Windows\Fonts\SimHei.ttf").generate(word_space_split) 125 image_colors = ImageColorGenerator(coloring) 126 plt.figure() 127 plt.imshow(my_wordcloud.recolor(color_func=image_colors)) 128 plt.imshow(my_wordcloud) 129 plt.axis("off") 130 plt.show() View Code

    ?

    還可以使用獲取到的微信好友頭像進行拼接(參考https://blog.csdn.net/zrp220807/article/details/80455651)

    核心模塊

    • itchat(爬取頭像)
    • pillow(拼接頭像)

    內置模塊

    • os(文件夾操作)
    • math(數學計算)

    ?

    轉載于:https://www.cnblogs.com/StuCzc/p/10774998.html

    總結

    以上是生活随笔為你收集整理的爬虫综合大作业(震惊!爬取了590位微信好友后竟然发现了)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。