文章目录  专栏导读 背景 结果预览 1、爬取页面分析 2、通过返回数据发现适合利用lxml+xpath 3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】 4、完整代码 总结   
 
 
 🔥🔥本文已收录于《Python基础篇爬虫》  🉑🉑本专栏专门针对于有爬虫基础准备的一套基础教学,轻松掌握Python爬虫,欢迎各位同学订阅,专栏订阅地址:点我直达  🤞🤞此外如果您已工作,如需利用Python解决办公中常见的问题,欢迎订阅《Python办公自动化》专栏,订阅地址:点我直达  
 
  
 我想利用爬虫获取【百度热搜页面】的全部热搜、包括    1、热搜榜    2、小说榜    3、电影榜    4、电视剧榜    5、汽车榜    6、游戏榜   
 
 
 爬取URL:https://top.baidu.com/board?   爬取方法:GET   返回数据:整个页面(TXT)   
  
 
'''
@Project :项目名称
@File    :程序.py
@IDE     :PyCharm
@Author  :一晌小贪欢
@Date    :2024/05/27 11:27
''' import  json
import  openpyxl
import  requests
from  lxml import  etreeurl =  'https://top.baidu.com/board?' 
cookies =  { 'Cookie' :  '填入自己的Cookie' 
} headers =  { 'User-Agent' :  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' , } params =  { 'platform' :  'pc' , 'tab' :  'homepage' , 'sa' :  'pc_index_homepage_all' , 
} res_data =  requests. get( url= url,  params= params,  headers= headers,  cookies= cookies) 
print ( res_data. text) 
 
 我们发现返回的数据是整个网页,其中每一种热搜均在其页面中    热搜榜、小说榜、电影榜、电视剧榜、汽车榜、游戏榜、存在如下div中 ↓    
 
 获取该【div】(利用lxml+xpath)    通过分析得:   //div[@id="sanRoot"]//div[@class="list_1EDla"]//a//div[@class="c-single-text-ellipsis"] 通过分析发现xpath没问题,但是获的值重复了,所以利用    range(0,len(hot_search),2),只要获取一个就行了 
 
 我们发现这几个排行榜,居然使用一个xpath就可以    通过分析得:   //div[@id="sanRoot"]//div[@class="list_1s-Px"]//a[@class="title_ZsyAw"] 【热搜指数】通过分析得:   //div[@id="sanRoot"]//div[@class="list_1s-Px"]//div[@class="exponent_QjyjZ"]//span 【热搜分类】通过分析得:   //div[@id="sanRoot"]//div[@class="list_1s-Px"]//div[@class="desc_2YkQx"] 这三个长度都是【50】    所以写进列表,进行以10个元素拆分,然后分别写进Excel   
'''
@Project :百度热搜爬虫
@File    :程序.py
@IDE     :PyCharm
@Author  :一晌小贪欢
@Date    :2024/05/27 11:27
''' import  json
import  openpyxl
import  requests
from  lxml import  etreewb =  openpyxl. Workbook( ) 
ws =  wb. active
ws. title =  '热搜榜' 
ws. append( [ '热搜榜' ] ) 
ws2 =  wb. create_sheet( '小说榜' ) 
ws2. append( [ '小说榜' ] ) 
ws3 =  wb. create_sheet( '电影榜' ) 
ws3. append( [ '电影榜' ] ) 
ws4 =  wb. create_sheet( '电视剧榜' ) 
ws4. append( [ '电视剧榜' ] ) 
ws5 =  wb. create_sheet( '汽车榜' ) 
ws5. append( [ '汽车榜' ] ) 
ws6 =  wb. create_sheet( '游戏榜' ) 
ws6. append( [ '游戏榜' ] ) url =  'https://top.baidu.com/board?' 
cookies =  { '填入自己的Cookie' 
} headers =  { 'User-Agent' :  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' , } params =  { 'platform' :  'pc' , 'tab' :  'homepage' , 'sa' :  'pc_index_homepage_all' , 
} res_data =  requests. get( url= url,  params= params,  headers= headers,  cookies= cookies) 
tree =  etree. HTML( res_data. text) '''
热搜榜
''' hot_search =  tree. xpath( '//div[@id="sanRoot"]//div[@class="list_1EDla"]//a//div[@class="c-single-text-ellipsis"]' ) 
print ( len ( hot_search) ) for  i in  range ( 0 , len ( hot_search) , 2 ) : print ( hot_search[ i] . text) ws. append( [ hot_search[ i] . text] ) 
'''
小说榜、电影榜、电视剧榜、汽车榜、游戏榜
''' 
hot_search2 =  tree. xpath( '//div[@id="sanRoot"]//div[@class="list_1s-Px"]//a[@class="title_ZsyAw"]' ) 
hot_search3 =  tree. xpath( '//div[@id="sanRoot"]//div[@class="list_1s-Px"]//div[@class="exponent_QjyjZ"]//span' ) 
type_ =  tree. xpath( '//div[@id="sanRoot"]//div[@class="list_1s-Px"]//div[@class="desc_2YkQx"]' ) 
count =  0 a_list =  [ ] for  i in  range ( len ( hot_search2) ) : a_list. append( hot_search2[ i] . text+ ' ' + hot_search3[ i] . text+ ' ' + type_[ i] . text) 
a_list =  [ a_list[ i: i+ 10 ]  for  i in  range ( 0 ,  len ( a_list) ,  10 ) ] 
count =  0 
for  i in  a_list: count+= 1 if  count ==  1 : for  j in  i: ws2. append( [ j] ) elif  count ==  2 : for  j in  i: ws3. append( [ j] ) elif  count ==  3 : for  j in  i: ws4. append( [ j] ) elif  count ==  4 : for  j in  i: ws5. append( [ j] ) elif  count ==  5 : for  j in  i: ws6. append( [ j] ) wb. save( "./整体热搜榜.xlsx" )  希望对初学者有帮助    致力于办公自动化的小小程序员一枚    希望能得到大家的【一个免费关注】!感谢    求个 🤞 关注 🤞    此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏    求个 ❤️ 喜欢 ❤️    此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏    求个 👍 收藏 👍    此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏