#test.pyimport 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.pyfrom openpyxl import load_workbook,Workbookdef write(pt,length,data):#设置异常处理,当try内的代码执行有误,将抛出except里的异常提示try:#加载已有表单wb = load_workbook('./weibo.xlsx') # ./路径为同个文件夹下查找文件; ../为同个父级路径下查找文件#找到表单里的第一个sheetsh = 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")