python网络爬虫:用selenium+BeautifulSoup库实现百度热搜榜数据的爬取

一、学习思路

(一)在学习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')

你可能感兴趣的:(python网络爬虫:用selenium+BeautifulSoup库实现百度热搜榜数据的爬取)