抓取微博热搜榜的数据(并写入excel文档)

import requests
# 发起请求,通过http库向目标站点发起请求
import re
import xlwt
# re模块用于正则表达式匹配。
url = 'https://s.weibo.com/top/summary'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
    'Cookie': 'SUB=_2AkMQdm1vf8NxqwFRmf4Uz2LjZYlxyg3EieKmKpy0JRMxHRl-yT9vqnwJtRB6O_ZDgXQxzqYRkMYTEDnl6U7s2AEOkg7G; '
              'SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WhTVblF4Ux3F1-uYJZcNBu1; _s_tentry=passport.weibo.com; '
              'Apache=2631991702688.9673.1730863723988; SINAGLOBAL=2631991702688.9673.1730863723988;'
              ' ULV=1730863723998:1:1:1:2631991702688.9673.1730863723988:'}
# User-Agent模拟了浏览器发送请求,Cookie包含了用户身份认证的信息,这通常是为了模拟登录状态或者保持会话。
responses = requests.get(url, headers=headers)
# 获取响应内容
contents = responses.content.decode('utf-8')
# 这里通过requests.get发送一个GET请求到指定的URL,并使用定义好的headers。获取响应后,将响应内容解码为UTF-8格式的字符串。

hotwords = re.findall('<tr class.*?<a.*?>(.*?)</a>', contents, re.DOTALL)[1:]
hotnumbers = re.findall('<tr class.*?<span>(.*?)</span>', contents, re.DOTALL)
# 这里使用了re.findall方法,结合正则表达式,从响应内容中提取热搜关键词和对应的热力指数。re.DOTALL参数确保.能匹配包括换行符在内的任何字符。
weibos = []
for hotword, hotnumber in zip(hotwords, hotnumbers):
    weibo = {
        "关键词": hotword,
        "热力指数": hotnumber,
    }
    weibos.append(weibo)
    print(weibos)
# 创建一个包含关键词和热力指数的字典列表,并打印出来:
workbook = xlwt.Workbook(encoding='utf-8')
sheet2=workbook.add_sheet('微博热搜榜')
ziduans=list(weibos[0].keys())
print(ziduans)
for i in range(len(ziduans)):
    sheet2.write(0, i, ziduans[i])

for row in range(1,len(weibos)+1,1):
    for col,key in zip(range(len(ziduans)),ziduans):
        sheet2.write(row, col, weibos[row-1][key])

workbook.save('weibo热搜榜.xls')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值