您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
05 買粉絲買粉絲爬蟲代碼(如何入門 Python 爬蟲)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-26 19:37:45【】1人已围观
简介enium_買粉絲) self.log(u'抓取到買粉絲文章%d篇' % len(articles)) # S
self.log(u'抓取到買粉絲文章%d篇' % len(articles))
# Step 6: 把買粉絲文章數據封裝成字典的list
self.log(u'開始整合買粉絲文章數據為字典')
articles_list = self.switch_arctiles_to_list(articles)
# Step 7: 把Step 5的字典list轉換為Json
self.log(u'整合完成,開始轉換為json')
data_json = json.mps(articles_list)
# Step 8: 寫文件
self.log(u'轉換為json完成,開始保存json數據到文件')
self.save_file(data_json)
self.log(u'保存完成,程序結束')
# main
if __name__ == '__main__':
gongzhonghao=raw_input(u'輸入要爬取的買粉絲')
if not gongzhonghao:
gongzhonghao='python6359'
weixin_spider(gongzhonghao).run()
第二版代碼:
對代碼進行了一些優化和整改,主要:
1.增加了excel存貯
2.對獲取文章內容規則進行修改
3.豐富了注釋
本程序已知缺陷: 如果買粉絲的文章內容包括視視頻,可能會報錯。
[python] view plain 買粉絲py
#!/usr/bin/python
# 買粉絲ding: utf-8
買粉絲買粉絲爬蟲的難點
有訪問限制、反爬機制等難點
買粉絲公眾平臺對爬蟲有訪問限制,頻繁的訪問和大流量的請求可能會被系統檢測到并封禁IP地址;買粉絲公眾平臺實施了一系列反爬機制,例如驗證碼、登錄驗證等,這些機制可以有效地阻止惡意程序的訪問和抓取數據
如何入門 Python 爬蟲
“入門”是良好的動機,但是可能作用緩慢。如果你手里或者腦子里有一個項目,那么實踐起來你會被目標驅動,而不會像學習模塊一樣慢慢學習。
另外如果說知識體系里的每一個知識點是圖里的點,依賴關系是邊的話,那么這個圖一定不是一個有向無環圖。因為學習A的經驗可以幫助你學習B。因此,你不需要學習怎么樣“入門”,因為這樣的“入門”點根本不存在!你需要學習的是怎么樣做一個比較大的東西,在這個過程中,你會很快地學會需要學會的東西的。當然,你可以爭論說需要先懂python,不然怎么學會python做爬蟲呢?但是事實上,你完全可以在做這個爬蟲的過程中學習python :D
看到前面很多答案都講的“術”——用什么軟件怎么爬,那我就講講“道”和“術”吧——爬蟲怎么工作以及怎么在python實現。
先長話短說summarize一下:
你需要學習
基本的爬蟲工作原理
基本的買粉絲抓取工具,scrapy
Bloom Filter: Bloom Filters by Example
如果需要大規模網頁抓取,你需要學習分布式爬蟲的概念。其實沒那么玄乎,你只要學會怎樣維護一個所有集群機器能夠有效分享的分布式隊列就好。最簡單的實現是python-rq: 買粉絲s://github.買粉絲/nvie/rq
rq和Scrapy的結合:darkrho/scrapy-redis · GitHub
后續處理,網頁析取(grangier/python-goose · GitHub),存儲(Mongodb)
以下是短話長說:
說說當初寫的一個集群爬下整個豆瓣的經驗吧。
1)首先你要明白爬蟲怎樣工作。
想象你是一只蜘蛛,現在你被放到了互聯“網”上。那么,你需要把所有的網頁都看一遍。怎么辦呢?沒問題呀,你就隨便從某個地方開始,比如說人民日報的首頁,這個叫initial pages,用$表示吧。
在人民日報的首頁,你看到那個頁面引向的各種鏈接。于是你很開心地從爬到了“國內新聞”那個頁面。太好了,這樣你就已經爬完了倆頁面(首頁和國內新聞)!暫且不用管爬下來的頁面怎么處理的,你就想象你把這個頁面完完整整抄成了個買粉絲放到了你身上。
突然你發現, 在國內新聞這個頁面上,有一個鏈接鏈回“首頁”。作為一只聰明的蜘蛛,你肯定知道你不用爬回去的吧,因為你已經看過了啊。所以,你需要用你的腦子,存下你已經看過的頁面地址。這樣,每次看到一個可能需要爬的新鏈接,你就先查查你腦子里是不是已經去過這個頁面地址。如果去過,那就別去了。
好的,理論上如果所有的頁面可以從initial page達到的話,那么可以證明你一定可以爬完所有的網頁。
那么在python里怎么實現呢?
很簡單
import Queue
initial_page = "買粉絲://買粉絲.renminribao.買粉絲"
url_queue = Queue.Queue()
seen = set()
seen.insert(initial_page)
url_queue.put(initial_page)
while(True): #一直進行直到海枯石爛
if url_queue.size()>0:
current_url = url_queue.get() #拿出隊例中第一個的url
store(current_url) #把這個url代表的網頁存儲好
for next_url in extract_urls(current_url): #提取把這個url里鏈向的url
if next_url not in seen:
seen.put(next_url)
url_queue.put(next_url)
else:
break
寫得已經很偽代碼了。
所有的爬蟲的backbone都在這里,下面分析一下為什么爬蟲事實上是個非常復雜的東西——搜索引擎公司通常有一整個團隊來維護和開發。
2)效率
如果你直接加工一下上面的代碼直接運行的話,你需要一整年才能爬下整個豆瓣的內容。更別說Google這樣的搜索引擎需要爬下全網的內容了。
問題出在哪呢?需要爬的網頁實在太多太多了,而上面的代碼太慢太慢了。設想全網有N個網站,那么分析一下判重的復雜度就是N*log(N),因為所有網頁要遍歷一次,而每次判重用set的話需要log(N)的復雜度。OK,OK,我知道python的set實現是hash——不過這樣還是太慢了,至少內存使用效率不高。
通常的判重做法是怎樣呢?Bloom Filter. 簡單講它仍然是一種hash的方法,但是它的特點是,它可以使用固定的內存(不隨url的數量而增長)以O(1)的效率判定url是否已經在set中。可惜天下沒有白吃的午餐,它的唯一問題在于,如果這個url不在set中,BF可以100%確定這個url沒有看過。但是如果這個url在set中,它會告訴你:這個url應該已經出現過,不過我有2%的不確定性。注意這里的不確定性在你分配的內存足夠大的時候,可以變得很小很少。一個簡單的教程:Bloom Filters by Example
注意到這個特點,url如果被看過,那么可能以小概率重復看一看(沒關系,多看看不會累死)。但是如果沒被看過,一定會被看一下(這個很重要,不然我們就要漏掉一些網頁了!)。 [IMPORTANT: 此段有問題,請暫時略過]
好,現在已經接近處理判重最快的方法了。另外一個瓶頸——你只有一臺機器。不管你的帶寬有多大,只要你的機器下載網頁的速度是瓶頸的話,那么你只有加快這個速度。用一臺機子不夠的話——用很多臺吧!當然,我們假設每臺機子都已經進了最大的效率——使用多線程(python的話,多進程吧)。
3)集群化抓取
爬取豆瓣的時候,我總共用了100多臺機器晝夜不停地運行了一個月。想象如果只用一臺機子你就得運行100個月了...
那么,假設你現在有100臺機器可以用,怎么用python實現一個分布式的爬取算法呢?
我們把這100臺中的99臺運算能力較小的機器叫作slave,另外一臺較大的機器叫作master,那么回顧上面代碼中的url_queue,如果我們能把這個queue放到這臺master機器上,所有的slave都可以通過網絡跟master聯通,每當一個slave完成下載一個網頁,就向master請求一個新的網頁來抓取。而每次slave新抓到一個網頁,就把這個網頁上所有的鏈接送到master的queue里去。同樣,bloom filter也放到master上,但是現在master只發送確定沒有被訪問過的url給slave。Bloom Filter放到master的內存里,而被訪問過的url放到運行在master上的Redis里,這樣保證所有操作都是O(1)。(至少平攤是O(1),Redis的訪問效率見:LINSERT – Redis)
考慮如何用python實現:
在各臺slave上裝好scrapy,那么各臺機子就變成了一臺有抓取能力的slave,在master上裝好Redis和rq用作分布式隊列。
代碼于是寫成
#slave.py
current_url = request_from_master()
to_send = []
for next_url in ext
很赞哦!(3)
相关文章
- tiktok video download high quality development(tiktok video是什么)
- tiktok shopping cart(Best TikTok Analytics Tool —— GugeeData)
- tiktok國外用戶數量(如何看待TikTok在國外市場也如此火爆?)
- Tiktok 打不開網頁(tiktok網頁版可以查看tiktokshop嗎)
- tiktok 白名單權限(tiktok賬號白名單跟高權重一樣嗎)
- tiktok商店怎么做(靠tiktok兼職靠譜嗎?)
- tiktok國際版ios下載app(怎么下載tiktok國際版ios)
- tiktok國際免費版(下載國際版抖音tiktok需要付費嗎)
- tiktok 手機卡壞了(日本的抖音怎么刷不了,我用日本的蘋果id下載了tiktok,登錄界面我用手機號登錄了,但是還是沒用)
- tiktok tiktok shop us tiktok(tiktokshop與喬達國際貨運(中國)有限公司是什么關系)
热门文章
站长推荐
tiktok商店(Tik Tok是什么軟件,哪個國家的?)
tiktok國際版app官方下載(海外tiktok怎么下載)
tiktok 周受資聽證會 直播(周受資舌戰美議員__TikTok被質疑的真實原因)
tiktok video download high quality resources(tiktok video是什么)
tiktok shop怎么入駐(shoptiktok商城是騙局嗎?)
tiktok 周受資聽證會(tiktokceo周受資需要向張一鳴匯報嗎)
tiktok tiktok video download(Tiktok怎么下載視頻?)
tiktok國家怎么選(tiktok現在屬于哪個國家)