導航:首頁 > 編程語言 > python爬蟲知乎頭像

python爬蟲知乎頭像

發布時間:2022-09-02 14:28:12

1. 如何使用python爬取知乎數據並做簡單分析

一、使用的技術棧:
爬蟲:python27 +requests+json+bs4+time
分析工具: ELK套件
開發工具:pycharm
數據成果簡單的可視化分析
1.性別分布
0 綠色代表的是男性 ^ . ^
1 代表的是女性
-1 性別不確定
可見知乎的用戶男性頗多。
二、粉絲最多的top30
粉絲最多的前三十名:依次是張佳瑋、李開復、黃繼新等等,去知乎上查這些人,也差不多這個排名,說明爬取的數據具有一定的說服力。
三、寫文章最多的top30
四、爬蟲架構
爬蟲架構圖如下:
說明:
選擇一個活躍的用戶(比如李開復)的url作為入口url.並將已爬取的url存在set中。
抓取內容,並解析該用戶的關注的用戶的列表url,添加這些url到另一個set中,並用已爬取的url作為過濾。
解析該用戶的個人信息,並存取到本地磁碟。
logstash取實時的獲取本地磁碟的用戶數據,並給elsticsearchkibana和elasticsearch配合,將數據轉換成用戶友好的可視化圖形。
五、編碼
爬取一個url:
解析內容:
存本地文件:
代碼說明:
* 需要修改獲取requests請求頭的authorization。
* 需要修改你的文件存儲路徑。
源碼下載:點擊這里,記得star哦!https : // github . com/forezp/ZhihuSpiderMan六、如何獲取authorization
打開chorme,打開https : // www. hu .com/,
登陸,首頁隨便找個用戶,進入他的個人主頁,F12(或滑鼠右鍵,點檢查)七、可改進的地方
可增加線程池,提高爬蟲效率
存儲url的時候我才用的set(),並且採用緩存策略,最多隻存2000個url,防止內存不夠,其實可以存在redis中。
存儲爬取後的用戶我說採取的是本地文件的方式,更好的方式應該是存在mongodb中。
對爬取的用戶應該有一個信息的過濾,比如用戶的粉絲數需要大與100或者參與話題數大於10等才存儲。防止抓取了過多的僵屍用戶。
八、關於ELK套件
關於elk的套件安裝就不討論了,具體見官網就行了。網站:https : // www . elastic . co/另外logstash的配置文件如下:
從爬取的用戶數據可分析的地方很多,比如地域、學歷、年齡等等,我就不一一列舉了。另外,我覺得爬蟲是一件非常有意思的事情,在這個內容消費升級的年代,如何在廣闊的互聯網的數據海洋中挖掘有價值的數據,是一件值得思考和需不斷踐行的事情。

2. 關於用python抓取知乎關注的人

用chrome的開發者工具,Firefox的firebug,或者第三方的fiddler,抓包仔細分析具體的請求過程就好。
尤其是fiddler,前端神器,寫爬蟲必備。

3. 如何用python寫爬蟲 知乎

學習

基本的爬蟲工作原理
基本的http抓取工具,scrapy
Bloom Filter: Bloom Filters by Example
如果需要大規模網頁抓取,你需要學習分布式爬蟲的概念。其實沒那麼玄乎,你只要學會怎樣維護一個所有集群機器能夠有效分享的分布式隊列就好。最簡單的實現是python-rq: https://github.com/nvie/rq
rq和Scrapy的結合:darkrho/scrapy-redis · GitHub
後續處理,網頁析取(grangier/python-goose · GitHub),存儲(Mongodb)

4. 如何用python 寫一個爬蟲用來爬P 站特定標簽下的高贊作品

Python寫這些爬蟲,批量獲取還是挺簡單的……不長逛P站但是寫了個可以獲取知乎指定收藏夾下的高贊答案的東西……
獲取知乎指定收藏夾下的高贊答案
獲取P站特定標簽下的高贊作品
這兩個需求應該是差不多的……
爬取收藏夾的代碼大概是這樣:
__author__ = '7sDream'

import hu

collection = hu.Collection('')

for answer in collection.answers:
if answer.upvote >= 1000:
answer.save(path=collection.name)

結果是這樣:

理論上來說爬P站應該差不多……
做好cookies管理,HTML解析就差不多了。
如果Python會的差不多了看看這個知乎模塊的源碼應該能寫出來P站的

5. 怎樣用Python設計一個爬蟲模擬登陸知乎

import requestsimport timeimport jsonimport osimport reimport sysimport subprocessfrom bs4 import BeautifulSoup as BS class ZhiHuClient(object): """連接知乎的工具類,維護一個Session 2015.11.11 用法: client = ZhiHuClient() # 第一次使用時需要調用此方法登錄一次,生成cookie文件 # 以後可以跳過這一步 client.login("username", "password") # 用這個session進行其他網路操作,詳見requests庫 session = client.getSession() """ # 網址參數是賬號類型 TYPE_PHONE_NUM = "phone_num" TYPE_EMAIL = "email" loginURL = r"http://www.hu.com/login/{0}" homeURL = r"http://www.hu.com" captchaURL = r"http://www.hu.com/captcha.gif" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding": "gzip, deflate", "Host": "www.hu.com", "Upgrade-Insecure-Requests": "1", } captchaFile = os.path.join(sys.path[0], "captcha.gif") cookieFile = os.path.join(sys.path[0], "cookie") def __init__(self): os.chdir(sys.path[0]) # 設置腳本所在目錄為當前工作目錄 self.__session = requests.Session() self.__session.headers = self.headers # 用self調用類變數是防止將來類改名 # 若已經有 cookie 則直接登錄 self.__cookie = self.__loadCookie() if self.__cookie: print("檢測到cookie文件,直接使用cookie登錄") self.__session.cookies.update(self.__cookie) soup = BS(self.open(r"http://www.hu.com/").text, "html.parser") print("已登陸賬號: %s" % soup.find("span", class_="name").getText()) else: print("沒有找到cookie文件,請調用login方法登錄一次!") # 登錄 def login(self, username, password): """ 驗證碼錯誤返回: {'errcode': 1991829, 'r': 1, 'data': {'captcha': '請提交正確的驗證碼 :('}, 'msg': '請提交正確的驗證碼 :('} 登錄成功返回: {'r': 0, 'msg': '登陸成功'} """ self.__username = username self.__password = password self.__loginURL = self.loginURL.format(self.__getUsernameType()) # 隨便開個網頁,獲取登陸所需的_xsrf html = self.open(self.homeURL).text soup = BS(html, "html.parser") _xsrf = soup.find("input", {"name": "_xsrf"})["value"] # 下載驗證碼圖片 while True: captcha = self.open(self.captchaURL).content with open(self.captchaFile, "wb") as output: output.write(captcha) # 人眼識別 print("=" * 50) print("已打開驗證碼圖片,請識別!") subprocess.call(self.captchaFile, shell=True) captcha = input("請輸入驗證碼:") os.remove(self.captchaFile) # 發送POST請求 data = { "_xsrf": _xsrf, "password": self.__password, "remember_me": "true", self.__getUsernameType(): self.__username, "captcha": captcha } res = self.__session.post(self.__loginURL, data=data) print("=" * 50) # print(res.text) # 輸出腳本信息,調試用 if res.json()["r"] == 0: print("登錄成功") self.__saveCookie() break else: print("登錄失敗") print("錯誤信息 --->", res.json()["msg"]) def __getUsernameType(self): """判斷用戶名類型 經測試,網頁的判斷規則是純數字為phone_num,其他為email """ if self.__username.isdigit(): return self.TYPE_PHONE_NUM return self.TYPE_EMAIL def __saveCookie(self): """cookies 序列化到文件 即把dict對象轉化成字元串保存 """ with open(self.cookieFile, "w") as output: cookies = self.__session.cookies.get_dict() json.mp(cookies, output) print("=" * 50) print("已在同目錄下生成cookie文件:", self.cookieFile) def __loadCookie(self): """讀取cookie文件,返回反序列化後的dict對象,沒有則返回None""" if os.path.exists(self.cookieFile): print("=" * 50) with open(self.cookieFile, "r") as f: cookie = json.load(f) return cookie return None def open(self, url, delay=0, timeout=10): """打開網頁,返回Response對象""" if delay: time.sleep(delay) return self.__session.get(url, timeout=timeout) def getSession(self): return self.__session if __name__ == '__main__': client = ZhiHuClient() # 第一次使用時需要調用此方法登錄一次,生成cookie文件 # 以後可以跳過這一步 # client.login("username", "password") # 用這個session進行其他網路操作,詳見requests庫 session = client.getSession()

6. 怎樣用Python設計一個爬蟲模擬登陸知乎

兩種方法:
1.帶cookielib和urllib2
import urllib2
import urllib
import cookielib
def login():
email = raw_input("請輸入用戶名:")
pwd = raw_input("請輸入密碼:") data={"email":email,"password":pwd}
post_data=urllib.urlencode(data) cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers
={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}website =
raw_input('請輸入網址:')req=urllib2.Request(website,post_data,headers)content=opener.open(req)print
content.read()
2.使用selenium
import selenium import webdriver
browser=webdriver.Firefox()
browser.get("Url")
browser.find_element_by_id(" ").sendkey("username")
browser.find_element_by_id(" ").sendkey("pass")
browser.find_element_by_id(" ").click()
其實我這個最簡單了,用的python3,requests, 只需要驗證一次,就會保存cookies,下次登錄使用cookies登錄。
第一步、打開首頁獲取_xref值,驗證圖片 第二步、輸入賬號密碼 第三步、看是否需要驗證、要則下載驗證碼圖片,手動輸入
第四步、判斷是否登錄成功、登錄成功後獲取頁面值。

7. python爬蟲怎麼賺錢 知乎

第一種。找爬蟲外包工作
網路爬蟲最通常的掙錢方式通過外包網站,做中小規模的爬蟲項目,向甲方提供數據抓取,數據結構化,數據清洗等服務。新入行的程序員大多數都會先嘗試這個方向,直接靠技術手段掙錢,也是技術人員最擅長的方式,但是由於競爭人員太多,價格可能不是很貴,白菜價。
第二種。抓取數據做網站
可以通過Python爬蟲抓取數據,來做網站掙錢,每個月有小幾千塊錢,雖然掙得不多,但是做成之後不需要怎麼維護,也算是有被動收入了。
第三種。在職大學生
如果你是在職大學生,數學或者計算機相關專業的人員,編程能力還可以的話,可以稍微看一下編程知識,比如爬蟲庫、HTML解析、內容存儲等,復雜還需要了解URL排重、模擬登錄、驗證碼識別、多線程等,這部分人員工程經驗比較少,想要通過爬蟲賺錢的話,可以找一些少量數據抓取的項目,一點點積累經驗,後期可以嘗試接一些監控類的項目或者大規模抓取的項目。
第四種。在職人員
如果你本身就從事Python網路爬蟲工作,掙錢是非常簡單的。在職人員比較熟悉項目開發流程,工程經驗豐富,能對一個任務的難度、時間、花費進行合理評估,可以嘗試去找一些大規模抓取任務、監控任務、移動端模擬登錄並抓取任務等,收益是非常可觀的。
第五種。運營自媒體
如果你技術好,經驗豐富,可以自己嘗試運營公眾號、自媒體、博客等,現在學習Python寫爬蟲的人越來越多,很多都是非科班出身,需求量大增,你可以利用自己的技術多寫一些教程和學習經驗總結,運營效果不錯的話,也可以獲得可觀的收入。

8. python爬蟲登錄知乎後怎樣爬取數據

模擬登錄
很多網站,比如知乎、微博、豆瓣,都需要登錄之後,才能瀏覽某些內容。所以想要爬取這類網站,必須先模擬登錄。比較簡單的方式是利用這個網站的 cookie。cookie 相當於是一個密碼箱,裡面儲存了用戶在該網站的基本信息。在一次登錄之後,網站會記住你的信息,把它放到cookie里,方便下次自動登錄。所以,要爬取這類網站的策略是:先進行一次手動登錄,獲取cookie,然後再次登錄時,調用上一次登錄得到的cookie,實現自動登錄。
動態爬取
在爬取知乎某個問題的時候,需要將滑動滑鼠滾輪到底部,以顯示新的回答。靜態的爬取方法無法做到這一點,可以引入selenium庫來解決這一問題。selenium庫模擬人瀏覽網站、進行操作,簡單易懂。

9. 知乎python 爬蟲如何入門學習

鏈接:https://pan..com/s/1wMgTx-M-Ea9y1IYn-UTZaA

提取碼:2b6c

課程簡介

畢業不知如何就業?工作效率低經常挨罵?很多次想學編程都沒有學會?

Python 實戰:四周實現爬蟲系統,無需編程基礎,二十八天掌握一項謀生技能。

帶你學到如何從網上批量獲得幾十萬數據,如何處理海量大數據,數據可視化及網站製作。

課程目錄

開始之前,魔力手冊 for 實戰學員預習

第一周:學會爬取網頁信息

第二周:學會爬取大規模數據

第三周:數據統計與分析

第四周:搭建 Django 數據可視化網站

......

閱讀全文

與python爬蟲知乎頭像相關的資料

熱點內容
aes對稱加密反編譯 瀏覽:548
java編譯成exe 瀏覽:188
gps處理演算法 瀏覽:594
什麼app可以和對象存錢 瀏覽:144
java字元串表達式計算 瀏覽:328
javacmd環境變數 瀏覽:49
電視上面找不到全民歌app怎麼辦 瀏覽:154
單片機中psw0 瀏覽:992
優酷視頻加密么 瀏覽:761
本地連接dos命令 瀏覽:204
雲伺服器怎麼上傳金幣房卡游戲 瀏覽:69
Python快遞管理可視化 瀏覽:417
java正則驗證數字 瀏覽:828
猴子網游安卓掃碼怎麼登錄 瀏覽:355
7天工作總結簡短程序員 瀏覽:60
手機號交易網站源碼 瀏覽:687
計算機演算法怎麼學 瀏覽:401
m2手環用什麼app才能用 瀏覽:227
應用伺服器打不開怎麼辦 瀏覽:538
釘釘安卓手機如何設置 瀏覽:559