一、学习思路
(一)在学习selenium库时,看到一种使用方法
1、使用selenium获取网页
2、用BeautifulSoup来解析和获取数据
(二)该方法的原理是:
1、selenium把element打开就加载了所有的源代码
2、HTML源代码字符串=driver.page_source #获取完整渲染的网页源代码,它获取结果数据类型是字符串
3、用BS把字符串格式解析为BeautifulSoup对象
(三)实操
1、代码如下:
from selenium import webdriver
import time
from bs4 import BeautifulSoup
import openpyxl
#引进所需要的模块
wb=openpyxl.Workbook()
sheet=wb.active
sheet.title='百度指数'
sheet.append(['序号','关键词','热点'])
#新建一个excel来保存后续数据
driver=webdriver.Chrome()
driver.get('http://top.baidu.com/buzz?b=1&c=513&fr=topcategory_c513')
time.sleep(3)
html=driver.page_source
time.sleep(5)
res=BeautifulSoup(html,'lxml')
lists=res.find_all('tr')
for list in lists:
num=list.find('span')
key=list.find('a',class_='list-title')
hotpoint=list.find('td',class_='last')
#在last标签里面由于排名有上升和下降 所以td标签里面的span标签的class属性的值不唯一,所以需要选择更高一级的标签
if hotpoint !=None:
hotpoint=hotpoint.find('span')
if num!=None and key!=None and hotpoint!=None :
rank=num.text
key=key.text
point=hotpoint.text
#此处的判断是基于一些结果中的空值,将其去掉
sheet.append([rank,key,point])
wb.save('百度热点.xlsx')