赞
踩
程序运行的截图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GimpWjCB-1639531088565)(程序运行截图.png)]
当时微博热搜的截图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lDXRgrxa-1639531088568)(微博热搜截图.png)]
对应的CSV截图为:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVtxici8-1639531088570)(csv截图.png)]
我再CSV中存取了他此时热搜榜的全部信息与当时的热度。
原理如下:
① 首先获取当前的时间
② 然后获取微博的URL
③ 根据网页上的源代码手动构造参数
④ 发送请求获取相应对象
⑤ 将获取到的数据保存到CSV中
代码如下:
import requests from lxml import etree import time import csv def gettime(): # 获取当前的时间 print("当前的时间是:", time.strftime("%Y-%m-%d %H:%M:%S")) pass def save(name, hot): lsname = [] for i in range(0, len(name)): lsname.append([name[i], hot[i]]) with open("hot.csv", "w", encoding='utf-8') as csvfile: writer = csv.writer(csvfile) writer.writerows(lsname) if __name__ == "__main__": gettime() # 确认目标的 url _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/96.0.4664.93 Safari/537.36 Edg/96.0.1054.53", "cookie" : "SINAGLOBAL=5701031797732.083.1638971150198; SUB=_2AkMW7DFkf8NxqwFRmP0QzGvkaIR1zgnEieKgsMC_JRMxHRl-yT9jqhErtRB6PWwfi8IMi4nS63fCLKIwRiYKqexEzF_Q; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WFPkNiIHiOqUjBBn8.B.qFu; _s_tentry=cn.bing.com; Apache=9978275422977.867.1639488984604; UOR=,,cn.bing.com; ULV=1639488984639:4:4:1:9978275422977.867.1639488984604:1639061325022", # "Referer": "https://www.baidu.com/link?url=j4BATujs6r1tDJgq8AqwTKYFP94_YcXPDXrDW9XKN2wmO0CyWck18MN0ES1bM5gX&wd=&eqid=fdbaa254000e24100000000261b05229" } # 发送请求 _response = requests.get(_url, headers = _headers) _data = _response.text # print(data_) # 提取数据 html_obj = etree.HTML(_data) # 置顶微博: 1.名称 2.url 链接 name_top = html_obj.xpath('//*[@id="pl_top_realtimehot"]/table/tbody/tr[1]/td[2]/a/text()')[0] url_top = html_obj.xpath('//*[@id="pl_top_realtimehot"]/table/tbody/tr[1]/td[2]/a/@href')[0] url_top = "https://s.weibo.com/" + url_top print(f'置顶微博:{name_top},链接地址:{url_top}') # 热搜榜微博:1.名称 2.序号 3.热度 # 热搜榜名称 name_list = html_obj.xpath('//td/span/preceding-sibling::a/text()') print(len(name_list)) print(name_list) # 热搜榜热度 hot_list = html_obj.xpath('//td/span/text()') print(len(hot_list)) print(hot_list) # 保存在CSV中 save(name_list, hot_list)
print(len(hot_list))
print(hot_list)
# 保存在CSV中
save(name_list, hot_list)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。