Python爬虫系列12-微博数据抓取-是否又有瓜吃了?

2022-06-25  本文已影响0人  Tony_Pm

序言

年少不经事,懂事已中年。在无知的年龄做了选择,在懂事的年纪承担后果,拿最好的年华,换最深刻的教训,哭着成长,笑着生活,这就是人生。
生活从未变得轻松,只是你每一天的坚持,练就你一身本事,才让生活变得轻松。愿每一天每一个人诸事顺意,好运长相伴。

实战

今日的目标网站

image.png

第一步:目标 - 网址 - 分析 - 发起网络请求 - 得到网站数据

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',
}
# 请求网络  
response = requests.get('https://service.account.weibo.com/', params=params, cookies=cookies, headers=headers)
print(response.text)

我们发现获取到的数据,非常的混乱,并且里面也没有显示任何的中文,不好辩解,比如网址的链接等。需要特殊的处理一下。


image.png
# 转码
response = response.content.decode('unicode_escape')
print(response)

经过处理之后,数据结构一目了然。接下来把我们认为中要的数据进行提取就可以了。这里我采用的是re正则表达式,其他的方式也可以 大家可以自行探索一番。


image.png

第二步:解析 - 提 取有价值的数据内容

点击每一个标题,会进入到该消息的详情页中。


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

接下来重复第一步、第二步的操作,获取到详情页的数据;其他的数据以此类推,都是一样的思路;大家可以动手自己实践下。


image.png

第三步: 持久化保存数据

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

在这个浮躁的时代;竟然还有人能坚持篇篇原创;

如果本文对你学习有所帮助-可以点赞👍+ 关注!将持续更新更多新的文章。

支持原创。感谢!

上一篇下一篇

猜你喜欢

热点阅读