Python爬蟲(chóng)系列12-微博數(shù)據(jù)抓取-是否又有瓜吃了?

序言

年少不經(jīng)事,懂事已中年。在無(wú)知的年齡做了選擇,在懂事的年紀(jì)承擔(dān)后果,拿最好的年華,換最深刻的教訓(xùn),哭著成長(zhǎng),笑著生活,這就是人生。
生活從未變得輕松,只是你每一天的堅(jiān)持,練就你一身本事,才讓生活變得輕松。愿每一天每一個(gè)人諸事順意,好運(yùn)長(zhǎng)相伴。

實(shí)戰(zhàn)

今日的目標(biāo)網(wǎng)站

image.png

第一步:目標(biāo) - 網(wǎng)址 - 分析 - 發(fā)起網(wǎng)絡(luò)請(qǐng)求 - 得到網(wǎng)站數(shù)據(jù)

image.png
import requests

cookies = {
    'SINAGLOBAL': '4164568015392.127.1641551947467',
    'SUBP': '0033WrSXqPxfM725Ws9jqgMF55529P9D9Wh2oFXSR-ZhVoD7mP8mQX5S5JpX5KMhUgL.Fo-71hqRSoMNSo-2dJLoIpYLxK-L1hqLBoMLxKnL1h.LBoeLxKML1-2L1hxJ9J9J',
    'UPSTREAM-SERVICE-ACCOUNT-WEIBO-COM': '5c9d4090953640c68ef0a73f01c3673b',
    'ALF': '1687088338',
    'SSOLoginState': '1655552337',
    'SCF': 'AmHV4ft38uoBMvGWUwHit4snm_fp21qN-LbyZIeqTtam1IRnq0gVDmexwVlu9Ce1cRXqyK7uMpELU4G6Do_3q08.',
    'SUB': '_2A25PqckDDeRhGeNO41QZ9inLzTmIHXVs3r3LrDV8PUNbmtANLWzBkW9NTt9Ar3W6_endjwecllkTKZB6gQhHxF8N',
    '_s_tentry': 'login.sina.com.cn',
    'UOR': ',,login.sina.com.cn',
    'Apache': '3914150919076.753.1655552339605',
    'ULV': '1655552339610:8:3:3:3914150919076.753.1655552339605:1655476178593',
    'PC_TOKEN': '49701743a5',
    'WBStorage': '4d96c54e|undefined',
}

headers = {
    'authority': 'service.account.weibo.com',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cache-control': 'max-age=0','referer': 'https://service.account.weibo.com/?type=6&status=0',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36',
}

params = {
    'type': '5',
    'status': '0',
}
# 請(qǐng)求網(wǎng)絡(luò)  
response = requests.get('https://service.account.weibo.com/', params=params, cookies=cookies, headers=headers)
print(response.text)

我們發(fā)現(xiàn)獲取到的數(shù)據(jù),非常的混亂,并且里面也沒(méi)有顯示任何的中文,不好辯解,比如網(wǎng)址的鏈接等。需要特殊的處理一下。


image.png
# 轉(zhuǎn)碼
response = response.content.decode('unicode_escape')
print(response)

經(jīng)過(guò)處理之后,數(shù)據(jù)結(jié)構(gòu)一目了然。接下來(lái)把我們認(rèn)為中要的數(shù)據(jù)進(jìn)行提取就可以了。這里我采用的是re正則表達(dá)式,其他的方式也可以 大家可以自行探索一番。


image.png

第二步:解析 - 提 取有價(jià)值的數(shù)據(jù)內(nèi)容

點(diǎn)擊每一個(gè)標(biāo)題,會(huì)進(jìn)入到該消息的詳情頁(yè)中。


image.png

image.png
import re

re_content = re.findall('<td><div class="m_table_tit"><a href="(.*?)" target="_blank">.*?</a></div></td>',response)
print(re_content)
image.png
for tony in re_content:
    # + 拼接 鏈接
    url = 'https://service.account.weibo.com' + tony
    print(url)
image.png

image.png

接下來(lái)重復(fù)第一步、第二步的操作,獲取到詳情頁(yè)的數(shù)據(jù);其他的數(shù)據(jù)以此類推,都是一樣的思路;大家可以動(dòng)手自己實(shí)踐下。


image.png

第三步: 持久化保存數(shù)據(jù)

    for text in content:
        file = open('tony-微博.txt','a',encoding='utf-8')
        file.write(text+'\n')
image.png

在這個(gè)浮躁的時(shí)代;竟然還有人能堅(jiān)持篇篇原創(chuàng);

如果本文對(duì)你學(xué)習(xí)有所幫助-可以點(diǎn)贊??+ 關(guān)注!將持續(xù)更新更多新的文章。

支持原創(chuàng)。感謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容