溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WeiboUserScrapy類爬蟲爬取爬蟲的示例分析

發(fā)布時間:2022-01-04 11:07:40 來源:億速云 閱讀:127 作者:柒染 欄目:大數(shù)據(jù)

WeiboUserScrapy類爬蟲爬取爬蟲的示例分析,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

我停止對有GUI功能集中版本的維護了,集中精力維護無GUI版本功能獨立版本的開發(fā)和維護,并且保證每個功能都是最小可用產(chǎn)品且互不干擾。但是功能獨立版本一直有個歷史遺留問題:沒有將集中版本中爬取每個用戶的所有微博的功能獨立出來

整體的剝離過程來算比較輕松,因為功能集中版本每個功能都有一個相對獨立的類,這個用戶微博爬蟲就是一個 WeiboUserScrapy 類,只不過在集中版本中為了和其他功能模塊進行通信和協(xié)調(diào),引進了 PyQT5 的信號量,以及一些公共配置變量,獨立時將這些東西去掉即可。

拿到代碼后,你需要做的兩件事依次是:

  1. 更換代碼中的 Cookie
  2. 把 user_id 改成你想要爬取的用戶 id(是純數(shù)字)
然后運行代碼即可,不一會兒你就能在項目的根目錄下的 user 文件夾看到諸如   {user_id}_{nickname}_{weibo_num}博_{followers}粉_{following}關(guān)注.csv'    格式的文件,爬取的微博都保存在這里。  
想到老鐵們可能有這樣的問題:某個博主有 4w 條微博,爬了 2w 條突然斷網(wǎng)了或者 Cookie 過期了,難道要重新爬?      
作為良心博主,當(dāng)然要加一個斷點續(xù)爬的功能,其實實現(xiàn)起來也不難,每次寫 csv 的時候同時將翻頁參數(shù) page 保存并更新到一個配置文件中即可,核心代碼如下:  
 

user_page_config = 'user_page.json'
if not os.path.exists('user_page.json'):
    page = 1
    with open(user_page_config,'w', encoding='utf-8-sig') as f:
        f.write(json.dumps({f'{self.user_id}':page}, indent=2))
else:
    with open(user_page_config,'r', encoding='utf-8-sig') as f:
        page = json.loads(f.read())[f'{self.user_id}']

random_pages = random.randint(1, 5)
for page in range(page, page_num + 1):
    self.get_one_page(page)  # 獲取第page頁的全部微博

    with open(user_page_config,'r', encoding='utf-8-sig') as f:
        old_data = json.loads(f.read())
        old_data[f'{self.user_id}'] = page

    with open(user_page_config,'w', encoding='utf-8-sig') as f:
        f.write(json.dumps(old_data, indent=2))
   
 
這樣,就能右鍵運行代碼,開開心心做其他事去,不用每時每刻盯著代碼。    

看完上述內(nèi)容,你們掌握WeiboUserScrapy類爬蟲爬取爬蟲的示例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI