;u'%s: %s' % (time.strftime('%Y-%m-%d %H:%M:%S'), msg)
def need_verify(self, selenium_買粉絲):
' 有時候對方會封鎖ip,這里做一下判斷,檢測買粉絲中是否包含id=verify_change的標簽,有的話,代表被重定向了,提醒過一陣子重試 '
return pq(selenium_買粉絲)('#verify_change').text() != ''
def create_dir(self):
'創建文件夾'
if not os.path.exists(self.kw):
os.makedirs(self.kw)
def run(self):
' 爬蟲入口函數 '
#Step 0 : 創建買粉絲命名的文件夾
self.create_dir()
# Step 1:GET請求到搜狗買粉絲引擎,以買粉絲買粉絲英文名稱作為查詢關鍵字
self.log(u'開始獲取,買粉絲買粉絲英文名為:%s' % self.kw)
self.log(u'開始調用sougou搜索引擎')
sougou_search_買粉絲 = self.get_search_result_by_kw()
# Step 2:從搜索結果頁中解析出買粉絲主頁鏈接
self.log(u'獲取sougou_search_買粉絲成功,開始抓取買粉絲對應的主頁wx_url')
wx_url = self.get_wx_url_by_sougou_search_買粉絲(sougou_search_買粉絲)
self.log(u'獲取wx_url成功,%s' % wx_url)
# Step 3:Selenium+PhantomJs獲取js異步加載渲染后的買粉絲
self.log(u'開始調用selenium渲染買粉絲')
selenium_買粉絲 = self.get_selenium_js_買粉絲(wx_url)
# Step 4: 檢測目標網站是否進行了封鎖
if self.need_verify(selenium_買粉絲):
self.log(u'爬蟲被目標網站封鎖,請稍后再試')
else:
# Step 5: 使用PyQuery,從Step 3獲取的買粉絲中解析出買粉絲文章列表的數據
self.log(u'調用selenium渲染買粉絲完成,開始解析買粉絲文章')
articles = self.parse_wx_articles_by_買粉絲(selenium_買粉絲)
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
<p> 近期,公司有相關買粉絲爬取的需求,摸索了一段時間,一開始使用搜狗買粉絲去取數據,但隨著后續搜狗的驗證碼機制越發惡心,用戶體驗極差,并且也無法取到歷史數據,只能取到近10條群發,這也預示著通過搜狗買粉絲爬取數據的方案對于我來說只能是一霎花火。</p>
<p> 下面這套方案是基于買粉絲客戶端進行數據的爬取的,實際上我很久之前就一直在使用了,只是一直沒有時間寫,現在抽空把整套方案梳理一遍,后續也會push到github上面去。</p>
<p> 或許你有更好的方法,歡迎在評論里留言,一起交流學習。</p>
一、前提
1.一個買粉絲號一天只能最多獲取8000篇文章的閱讀/點贊信息;
2.買粉絲買粉絲發文頻率(一條群發消息包含8篇以內文章);
服務號1個月(按自然月)內可發送4條群發消息;
訂閱號(認證用戶、非認證用戶)1天內可群發1條消息;
二、獲取買粉絲文章信息所需參數
步驟如下:
1.獲取買粉絲號與買粉絲對應信息(抓包獲取,且除文章內容外每一步驟均需要以下參數)
2.獲取買粉絲文章列表
3.獲取文章內容(永久鏈接)
4.獲取點贊數/閱讀數
5.獲取評論內容
三、實施
待更...
2024-07-18 15:57
2024-07-18 15:52
2024-07-18 15:52
2024-07-18 15:52
2024-07-18 15:45
2024-07-18 14:52