最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python爬蟲過程中遇到微博since_id怎樣處理

2021-02-26 11:32 作者:呆唯真可愛O_O  | 我要投稿

????在崔慶才《網(wǎng)絡爬蟲開發(fā)實戰(zhàn)》第6.3小節(jié)中,舉出Ajax數(shù)據(jù)爬取的一個實例,即使用Python爬取微博數(shù)據(jù)。但著書時間相對較早,原本的請求URL中用‘page’就可以實現(xiàn)翻頁,如今卻是使用‘since_id’。

原本URL末尾是page(1,2,3....)不是since_id

????但在仔細觀察后我們便可發(fā)現(xiàn),since_id的值在第一頁為‘’,也就是沒有,而下一頁的since_id,是可以在上一頁的 預覽--data--cardlistinfo 中找到的。意思是,上一頁微博瀏覽到這一條,下一頁微博從這一條開始。

????當時的我挺懵逼的,這必得要 get_since_id 啊,可你也得先 get_page 啊,可你不知道since_id 怎么 get_page 啊。。。。。。

真是個套娃問題

????但當我在網(wǎng)上尋求答案時,發(fā)現(xiàn)了global這個方法,它可以改變函數(shù)外的數(shù)值。大概就像這樣:

????原本函數(shù)內(nèi)的x是封裝在函數(shù)里的,與外界沒有關系,但global就把它們聯(lián)系起來了。

????所以,我們可以在函數(shù)外命令since_id為‘’,然后通過global迭代改變它的值。是不是感覺這樣一個無限循環(huán)的問題可以解決了?

代碼附上:


結果大概是這樣的:

詳細代碼:

import requests

from pymongo import MongoClient as mc

from pyquery import PyQuery as pq

#basic_info#

basic_url='https://m.weibo.cn/api/container/getIndex?type=uid&value=2830678474&containerid=1076032830678474'

since_id=''

final_url=basic_url+'&since_id='+str(since_id)

headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74'}

first_result=requests.get(final_url,headers=headers)

second_result=first_result.json()

third_result=second_result.get('data')

#get_since_id#

def get_since_id():

? ? global since_id

? ? forth_result=third_result.get('cardlistInfo').get('since_id')

? ? return since_id? ?

#get_page#

def get_page(since_id):

? ? fifth_results=third_result.get('cards')

? ? for fifth_result in fifth_results:

? ? ? ? six_result=fifth_result.get('mblog')

? ? ? ? weibos={}

? ? ? ? weibos['comments']=six_result.get('comments_count')

? ? ? ? weibos['text']=pq(six_result.get('text')).text()

? ? ? ? yield weibos

#main#

def main():

? ? since_id=''

? ? for i in range(1,11):

? ? ? ? print('page_{}'.format(i))

? ? ? ? weibos=get_page(since_id)

? ? ? ? for weibo in weibos:

? ? ? ? ? ? print(weibo)

? ? ? ? since_id=get_since_id()

if __name__=='__main__':

? ? main()


本人非計算機專業(yè)學生,編程也是剛學不久,發(fā)文章出來也是希望大家少像我一樣踩坑,如果有講的不好的地方,請多包涵?。。?/span>


Python爬蟲過程中遇到微博since_id怎樣處理的評論 (共 條)

分享到微博請遵守國家法律
萨迦县| 临汾市| 赣榆县| 章丘市| 云和县| 新泰市| 开平市| 什邡市| 额济纳旗| 扶沟县| 勐海县| 威远县| 康定县| 当涂县| 铁岭市| 永仁县| 如皋市| 峨边| 邵东县| 富阳市| 密云县| 布尔津县| 黑河市| 蒙自县| 曲松县| 荆门市| 襄城县| 尼木县| 西贡区| 高阳县| 镇雄县| 巴马| 福贡县| 侯马市| 通州区| 成都市| 河曲县| 池州市| 永兴县| 平塘县| 贵港市|