Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整代码)

server/2024/10/21 19:36:10/

文章目录

  • 专栏导读
  • 背景
  • 结果预览
  • 1、爬取页面分析
  • 2、通过返回数据发现适合利用lxml+xpath
  • 3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】
  • 4、完整代码
  • 总结

专栏导读

🔥🔥本文已收录于《Python基础篇爬虫

🉑🉑本专栏专门针对于有爬虫基础准备的一套基础教学,轻松掌握Python爬虫,欢迎各位同学订阅,专栏订阅地址:点我直达

🤞🤞此外如果您已工作,如需利用Python解决办公中常见的问题,欢迎订阅《Python办公自动化》专栏,订阅地址:点我直达

🔺🔺此外《Python30天从入门到熟练》专栏已上线,欢迎大家订阅,订阅地址:点我直达

背景

  • 我想利用爬虫获取【百度热搜页面】的全部热搜、包括

  • 1、热搜榜

  • 2、小说榜

  • 3、电影榜

  • 4、电视剧榜

  • 5、汽车榜

  • 6、游戏榜

结果预览

在这里插入图片描述

在这里插入图片描述

1、爬取页面分析

爬取URL:https://top.baidu.com/board?

爬取方法:GET

返回数据:整个页面(TXT)

  • 代码

python"># -*- coding: UTF-8 -*-
'''
@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)
  • 请求结果

在这里插入图片描述

2、通过返回数据发现适合利用lxml+xpath

  • 我们发现返回的数据是整个网页,其中每一种热搜均在其页面中

  • 热搜榜、小说榜、电影榜、电视剧榜、汽车榜、游戏榜、存在如下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)只要获取一个就行了

在这里插入图片描述

3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】

  • 我们发现这几个排行榜,居然使用一个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

4、完整代码

python"># -*- coding: UTF-8 -*-
'''
@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
# 修改sheet名
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"]')
# print(len(hot_search))
# 热搜指数
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 = 0a_list = []for i in range(len(hot_search2)):# print(hot_search2[i].text+' '+hot_search3[i].text+' '+type_[i].text)a_list.append(hot_search2[i].text+' '+hot_search3[i].text+' '+type_[i].text)# 将a_list 以10个元素拆分成小列表
a_list = [a_list[i:i+10] for i in range(0, len(a_list), 10)]
count = 0
for i in a_list:count+=1if 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基础学习专栏


http://www.ppmy.cn/server/47342.html

相关文章

idea项目一直在build

IDEA项目一直在build的原因可能包括构建进程堆大小过小、缓存问题、依赖包下载缓慢或网络问题。12 构建进程堆大小过小:如果IDEA的构建进程堆大小设置得不够大,可能会导致构建过程缓慢或卡顿。解决方法是将构建进程堆大小参数扩大,例如将700…

【图像处理与机器视觉】频率域滤波

知识铺垫 复数 CRjI 可以看作复平面上的点,则该复数的坐标为(R,I) 欧拉公式 e j θ c o s θ j s i n θ e^{j\theta} cos \theta j sin \theta ejθcosθjsinθ 极坐标系中复数可以表示为: C ∣ C ∣ ( c o s…

学计算机,我错了吗?

今天,我的一位朋友告诉我,终于找到一家小公司入职,年前 1 月辞职,本想休息一段时间,没成想,休息到 6 月份,现在程序员真的越来越难找工作了。 肯定有人在想,现在这种行情&#xff0…

LAMP源码编译安装——CentOS7

文章目录 LAMP是什么LAMP软件组件LinuxApacheMySQLPHP 源码安装Apache一、准备工作二、安装环境依赖包三、配置软件模块四、编译及安装五、优化配置文件路径六、添加httpd系统服务(有两种方法)方法一:方法二: 七、修改httpd 服务配…

【TB作品】MSP430F5529单片机,温控小风扇,DS18B20温度读取,PWM风扇

功能 /* OLED SCL ----------P3.0 SDA ----------P3.1 VCC ----------3.3V GND ----------GND 风扇 DATA ----------P2.4 VCC ----------3.3V GND ----------GND DS18B20 DATA ----------P1.5 VCC ----------3.3V GND ----------GND 功能: S1 改变占…

awtk踩坑记录二:移植jerryscript到awtk design项目

从github下载并编译awtk, awtk-mmvm和awtk-jerryscript(如果没有) 用awtk-designer新建项目,awtk和awtk-mmvm路径改为上一步github下载到的目录路径(如designer改不了,可在project.json上修改) 从awtk-je…

深度学习-05-反向传播理论知识

深度学习-05-反向传播理论知识 本文是《深度学习入门2-自製框架》 的学习笔记,记录自己学习心得,以及对重点知识的理解。如果内容对你有帮助,请支持正版,去购买正版书籍,支持正版书籍不仅是尊重作者的辛勤劳动&#xf…

前端基础1-6 :es6

点击跳转,详细查看es6 const常量 const LIMIT 10; const OBJ_MAP {a: A,A: a }1. 不允许重复声明赋值 var arg1 aarg1 aa// 常量 - ES5Object.defineProperty(window, arg2, {value: aaa,writable: false})// ES6const arg2 aaa2. 块级作用域 if (true) {con…