简单使用selenium抓取微博热搜话题存储进Excel表格中

2023-12-13 20:42:30

?

#test.py

import requests
from selenium import webdriver
import time
from write import write

#首先打开浏览器
drive = webdriver.Chrome()

#设置隐式等待:等待元素找到,如果找到元素则马上继续执行语句,如果找不到元素,会在设定时间内不断请求寻找元素,当超过设定时间还未找到,则抛出异常
#这里设置等待5s
drive.implicitly_wait(5)

#将浏览器窗口最大化
drive.maximize_window()

#进入网址页面
drive.get('https://weibo.com/newlogin?tabtype=topic&gid=&openLoginLayer=0&url=https%3A%2F%2Fwww.weibo.com%2F')

#打开页面后页面将停留3秒
#time.sleep(3)

#通过css定位寻找元素,这里用class定位
#热搜话题标题
titles = drive.find_elements_by_css_selector(".HotTopic_tit_eS4fv")
#热搜话题内容
contents = drive.find_elements_by_css_selector(".HotTopic_wbtext_iNPG5")
#热搜话题阅读数量
reads = drive.find_elements_by_css_selector(".HotTopic_num_1H-j8>span:first-child")
#热搜话题讨论数量
discusss = drive.find_elements_by_css_selector(".HotTopic_num_1H-j8>span:last-child")

#获取titles的长度
length = len(titles)

#调用写入表格方法
write(1,length,titles)
write(2,length,contents)
write(3,length,reads)
write(4,length,discusss)

#关闭浏览器
drive.quit()
#write.py

from openpyxl import load_workbook,Workbook


def write(pt,length,data):
    #设置异常处理,当try内的代码执行有误,将抛出except里的异常提示
    try:
        #加载已有表单
        wb = load_workbook('./weibo.xlsx') #  ./路径为同个文件夹下查找文件; ../为同个父级路径下查找文件
        #找到表单里的第一个sheet
        sh = wb.active
        #行数循环,第一行是表头,因此从第二行开始,range()为左闭右开,range(0,8)即0开始,7结束
        for i in range(2,length+2):
            #将对应位置的单元格填充进数据
            sh.cell(row=i,column=pt).value=data[i-2].text    #text:获取元素的描述,即获取找到的元素中的 <p>天下第一<p> 天下第一
        #保存文档
        wb.save('./weibo.xlsx')
    except Exception:
        print("写入有误")


# def test():
      #创建一个表单
#     wb = Workbook()
#     sh = wb.active
#     title = ["标题","内容"]
      #将表头的名称插入表单
      #方法一
#     # for i in range(1,3):
#     #     sh.cell(row=1,column=i).value = title[i-1]
      #方法二
#     sh.append(title)
#     print("成功")
#     wb.save("./test.xlsx")

文章来源:https://blog.csdn.net/qq_36751833/article/details/134847948
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。