1. 程式人生 > >新浪微博粉絲爬蟲-wap站只能爬取20頁-

新浪微博粉絲爬蟲-wap站只能爬取20頁-

由上圖可見:微博已經視粉絲分佈為商業機密,故爬取難度越來越大。無論web上爬,還是手機上爬,均受限。

兩種方式:手動爬+微博API爬。

本文展示手動爬,以李易峰的粉絲分佈為基礎,只能爬取20頁,原始碼如下

# encoding=utf-8
import random
import json
import base64
import requests
from lxml import etree
import re
import pymongo
"""
輸入你的微博賬號和密碼,可去淘寶買,一元七個。
建議買幾十個,微博限制的嚴,太頻繁了會出現302轉移。
或者你也可以把時間間隔調大點。
"""
myWeiBo = [
    # {'no': '
[email protected]
', 'psw': '123456789'}, {'no': '[email protected]', 'psw': '987654321'}, #{'no': '[email protected]', 'psw': 'a123456'}, ] host="http://weibo.cn" scrawl_ID=set() cookies = [] def getCookies(weibo): """ 獲取Cookies """ loginURL = r'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)' for elem in weibo: account = elem['no'] password = elem['psw'] username = base64.b64encode(account.encode('utf-8')).decode('utf-8') postData = { "entry": "sso", "gateway": "1", "from": "null", "savestate": "30", "useticket": "0", "pagerefer": "", "vsnf": "1", "su": username, "service": "sso", "sp": password, "sr": "1440*900", "encoding": "UTF-8", "cdult": "3", "domain": "sina.com.cn", "prelt": "0", "returntype": "TEXT", } session = requests.Session() r = session.post(loginURL, data=postData) jsonStr = r.content.decode('gbk') #print 'jsonStr=',jsonStr info = json.loads(jsonStr) #print 'info=',info if info["retcode"] == "0": print "Get Cookie Success!( Account:%s )" % account cookie = session.cookies.get_dict() cookies.append(cookie) else: print "Failed!( Reason:%s )" % info['reason'] return cookies def weiboLogin(ID): cookies = getCookies(myWeiBo) print "Get Cookies Finish!( Num:%d)" % len(cookies) cookie=random.choice(cookies) rich_url="http://weibo.cn/%s/fans" % ID r=requests.post(rich_url,cookies=cookie) return r.content def url_to_page(url): cookie=random.choice(cookies) r=requests.post(url,cookies=cookie) if(r.status_code==requests.codes.ok): return r.content else: return r.status_code def MongoInit(): clinet = pymongo.MongoClient("localhost", 27017) db = clinet["Sina_by_fw"] Fans_db = db["Fans"] print"MongoDBPipleline_init() finish****" return Fans_db fans_cities=[] page_count=0 fans_count=0 Fans_db=MongoInit() def parse_for_fans(page,IDhost): global Fans_db,fans_cities global page_count global fans_count page_count+=1 print"page_count=",page_count IDs=set(re.findall('uid=(\d+)', page)) for ID in IDs: if ID!=str(IDhost):# one is str ,the other is int fans_count+=1 info_page=url_to_page("http://weibo.cn/%s/info" % ID) expression_nick=u'\u6635\u79f0[:|\uff1a](.*?)<' nick=re.findall(expression_nick.encode('UTF-8'),info_page)[0] expression_city=u'\u5730\u533a[:|\uff1a](.*?)<' city=re.findall(expression_city.encode('UTF-8'),info_page)[0]#this must be encode('UTF-8')!!!!! print nick,city,fans_count fans_cities.append(city) ''' if len(fans_cities)==50: fans_cities_dict=dict() for i in range(len(fans_cities)): fans_cities_dict[str(i+1)]=fans_cities[i] Fans_db.insert(fans_cities_dict) del fans_cities[:] ''' e_page=etree.HTML(page) url_next=e_page.xpath(u'//div[@class="pa" and @id="pagelist"]/form/div/a[text()="\u4e0b\u9875"]/@href') if url_next: next_page=url_to_page(host+url_next[0]) parse_for_fans(next_page,IDhost) else: fans_cities_dict=dict() for i in range(len(fans_cities)): fans_cities_dict[str(i+1)]=fans_cities[i] Fans_db.insert(fans_cities_dict) del fans_cities[:] #系統提示:為了避免騷擾,微博智慧反垃圾系統已過濾掉部分廣告使用者。 page=weiboLogin(ID=1291477752) parse_for_fans(page,IDhost=1291477752)


注意:1.網站的資料要經過utf-8解碼

2.mongodb的資料必須要為python字典。

相關推薦

粉絲爬蟲-wap只能20-

由上圖可見:微博已經視粉絲分佈為商業機密,故爬取難度越來越大。無論web上爬,還是手機上爬,均受限。 兩種方式:手動爬+微博API爬。 本文展示手動爬,以李易峰的粉絲分佈為基礎,只能爬取20頁,原始碼如下 # encoding=utf-8 import random i

粉絲——爬蟲漲粉技巧

新浪微博現在對待粉絲就像對待商業機密 很難有漏洞 以下程式碼說明技巧首先第一部瀏覽器輸入紅色高亮顯示的程式碼<?php qufen.ren /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is

爬蟲初探】搜尋爬蟲實現

全文概述 功能:爬取新浪微博的搜尋結果,支援高階搜尋中對搜尋時間的限定 網址:http://s.weibo.com/ 實現:採取selenium測試工具,模擬微博登入,結合PhantomJS/Firefox,分析DOM節點後,採用Xpath對節點資訊進行獲

評論爬蟲小DEMO

微博模擬登陸(使用者手動輸入): (1) POST代理 (2) COOKIE登陸 http://www.cnblogs.com/EmilySun/p/6158147.html Chrome瀏覽器開啟m.weibo.cn,右鍵點選檢查-> Netwo

超讚!最全如何快速增加粉絲數!如何迅速提高粉絲數量?

不少人現在都在玩微博,但是總是感嘆粉絲太少,發出去的微博根本沒有任何的互動和點評,因此心灰意冷,總是想方設法的去加粉絲,早期微博上通常大家一味地靠加關注再偷偷取消這樣的蠻幹和小兒科,早就為行家所不齒,而且據說新浪的微博技術已經有針對性地對此類行為掌控和懲罰。       其

python 爬蟲1 開始,先拿開始

大括號 版本 install esp con data- 定位 ble Language 剛剛開始學。 目的地是兩個。一個微博,一個貼吧 存入的話,臨時還沒想那麽多。先存到本地目錄吧 分詞和推薦後面在整合 mysql mongodb hadoop redius 後面在用

Python爬蟲開源項目代碼,信、淘寶、豆瓣、知乎、、QQ、去哪網等 代碼整理

http server 以及 pro 模擬登錄 取數 存在 漏洞 搜狗 作者:SFLYQ 今天為大家整理了32個Python爬蟲項目。 整理的原因是,爬蟲入門簡單快速,也非常適合新入門的小夥伴培養信心。所有鏈接指向GitHub,祝大家玩的愉快~ 1、WechatSogou

爬蟲v1.0

                 心血來潮想看看自己這幾年都去過什麼地方,因為我的動態資訊基本上都發布在微博上面的,上面也記錄了地址,

1-爬蟲-(2017-05-09)

1 爬使用者的資訊 1-1 哪裡找cookies 1-2 哪裡找使用者資訊 2 爬使用者發過的所有部落格 2

爬蟲

weibo.py# -*- coding: utf-8 -*- import scrapy from scrapy.http import Request import json import re import random from weibo_users.items

基於scrapy的分散式爬蟲個人資訊和內容存入MySQL

為了學習機器學習深度學習和文字挖掘方面的知識,需要獲取一定的資料,新浪微博的大量資料可以作為此次研究歷程的物件 一、環境準備 python 2.7  scrapy框架的部署(可以檢視上一篇部落格的簡要操作,傳送門:點選開啟連結) mysql的部署(需要的資源

python3[爬蟲實戰] 爬蟲之requests京東客服

爬取的內容為京東客服的微博及評論 思路:主要是通過手機端訪問新浪微博的api介面,然後進行資料的篩選, 這個主要是登陸上去的微博的url連結, 可以看到的介面: 這裡主要爬取的內容為: 說說,說說下面的評論條目 雖然很簡單,但是,不得不說句mmp,爬

用python寫網路爬蟲-評論

新浪微博需要登入才能爬取,這裡使用m.weibo.cn這個移動端網站即可實現簡化操作,用這個訪問可以直接得到的微博id。 分析新浪微博的評論獲取方式得知,其採用動態載入。所以使用json模組解析json程式碼 單獨編寫了字元優化函式,解決微博評論中的嘈雜干擾

爬蟲

這周的第一個小任務:爬取動態網頁,拿新浪微博做例子,我爬取了指定使用者微博的基本資訊,包括暱稱,性別,粉絲數,關注人數和主頁地址,還有發過的所有微博的地址和資訊內容,如果轉發時沒有說任何內容的話只會顯示轉發了微博。 需要注意的是網頁版資訊量太大,用手機端的也就

爬蟲分享(一天可抓 1300 萬條資料)

爬蟲功能: 此專案和QQ空間爬蟲類似,主要爬取新浪微博使用者的個人資訊、微博資訊、粉絲和關注(詳細見此)。 程式碼獲取新浪微博Cookie進行登入,可通過多賬號登入來防止新浪的反扒(用來登入的賬號可從淘寶購買,一塊錢七個)。 專案爬的是新浪微

【python 爬蟲】python 24小時熱門話題top500

一、需求分析 模擬登陸新浪微博,爬取新浪微博的熱門話題版塊的24小時內的前TOP500的話題名稱、該話題的閱讀數、討論數、粉絲數、話題主持人,以及對應話題主持人的關注數、粉絲數和微博數。 二、開發語言 python2.7 三、需要匯入模組 import

Python爬蟲程式

寫在前面:本文比較詳細,不想看囉嗦的可以直接到這裡下載原始碼 0x00. 起因 因為參加學校大學生創新競賽,研究有關微博博文表達的情緒,需要大量微博博文,而網上無論是國內的某度、csdn,還是國外谷歌、gayhub、codeproject等都找不到想要的

爬蟲(登陸訪問、cookie訪問)

一、思路:    登入 ====>進入指定頁面 ====>獲取cookie ====> 帶cookie訪問相關頁面。    注:貌似微博頁面稍微改了一下:現在通過登入直接進入個人中心的過程中所獲取的cookie不能用於訪問其他頁面,因此,才會在登陸後加一層進

最新python爬蟲千萬級資料,scrapy思路+架構+原始碼

1.1 爬取目標 爬取的目標是新浪微博使用者的公開基本資訊,如使用者暱稱、頭像、使用者的關注、粉絲列表以及釋出的微博等 1.2 準備工作     代理池、 Cookies 池已經實現並可以正常執行,安裝 Scrap

[python爬蟲] Selenium內容及使用者資訊

登入入口 新浪微博登入常用介面:http://login.sina.com.cn/  對應主介面:http://weibo.com/但是個人建議採用手機端微博入口:http://login.weibo.cn/login/ 其原因是手機端資料相對更輕量型,同時基本資料都齊全,可能缺少些個人基本資訊,如"個人資料