序言
年少不經(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