Python 爬虫之简单的爬虫(二)

news/2024/7/19 9:28:41 标签: python, 爬虫, 开发语言

爬取百度热搜榜


文章目录

  • 爬取百度热搜榜
  • 前言
  • 一、展示哪些东西
  • 二、基本流程
  • 三、前期数据获取
    • 1.引入库
    • 2.请求解析获取
  • 四、后期数据处理
    • 1.获取保存
  • 总结


前言

每次打开浏览器,我基本上都会看一下百度热搜榜。这篇我就写一下如何获取百度的热搜榜信息吧。

如果到最后看的云里雾里的,请先看我写的上一篇《Python 爬虫之简单的爬虫(一)》https://blog.csdn.net/weixin_57061292/article/details/135038581


一、展示哪些东西

  1. 其实每个标题背后有很多数据类型,我挑一些有用的东西展示了出来。

在这里插入图片描述

  1. 其中有标记 五角星 的标题含义是看下图:

在这里插入图片描述


二、基本流程

主要是以下几部分(下文基本会按照这个步骤来写):

  • 导入需要的库
  • 要测试的网页
  • 生成代理,请求网页
  • 请求成功,解析网页,找到并保存想要的东西
  • 请求失败,返回相应状态码

三、前期数据获取

1.引入库

代码如下:

python"># 将这个编码后的链接解码回原始的URL格式
from urllib.parse import unquote

# 用于发送 HTTP 请求
from bs4 import BeautifulSoup

# 这是一个用于解析 HTML 和 XML 文档
import requests

# 用于处理下面获取的数据
import json

记得看注释哦


2.请求解析获取

代码如下:

python"># 目标网页地址
url = 'https://www.baidu.com/'

# 定义请求头的浏览器代理,伪装成浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) '
                  'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36',
    'host': 'www.baidu.com'}

# 请求网页
response = requests.get(url, headers=headers)
print('status_code:', response.status_code)

# 解析 HTML 文档
soup = BeautifulSoup(response.text, "lxml")

# 获取相应标签里的内容
textarea = soup.find("textarea", id="hotsearch_data")

代码不多就三操作合一啦。

其它代码还好说,主要是最后一行代码,看下图应该就明白了(获取的也就是这个标签下的内容)。
在这里插入图片描述


四、后期数据处理

1.获取保存

代码如下:

python"># 进行切片处理无用信息,并用json格式读取数据
data_str = textarea.text.split('>')[-1]  # 作用是把标签去掉,只保留热榜数据
data = json.loads(data_str)

# 打开一个文本文档并写入
with open('hotsearch.txt', 'w', encoding='utf-8') as f:

    # 遍历这些数据
    for item in data["hotsearch"]:

        # 获取标题、链接、排名信息
        card_title = item["card_title"]
        linkurl = item["linkurl"]
        index = item["index"]
        hotTags = item["hotTags"]
        heat_score = item["heat_score"]

        # 写入文件
        if hotTags == '3':    # 表示这个标题当前有《热》的红色角标
            f.write(f'标题:{card_title} \u2605 \u2605 \u2605 \u2605 \u2605 \n')
        else:
            f.write(f'标题:{card_title}\n')

        f.write(f'链接:{unquote(linkurl)}\n')
        f.write(f'热度:{heat_score}\n')
        f.write(f'排名:{index}\n\n')
  • 第一步:进行切片处理,把无用信息删掉,并用json格式读取数据。用json方便后期的数据处理,减少难度。
    在这里插入图片描述
  • 第二步:打开先打开一个文本文档,为了后面一边遍历数据内容一边写入文件。
  • 第三步:就像开头展示的,把那五种数据类型获取到。
  • 第四步:把获取到数据整理一下写入到文件中。
    在这里插入图片描述

总结

写点爬虫小程序来替自己搜一些东西还挺有趣的。以前需要自己手动花老长时间从网上搜,现在程序刷的一下就好了。


http://www.niftyadmin.cn/n/5271868.html

相关文章

【数据结构】(二叉树)计算结点|叶子结点|高度|第K层结点数

目录 概念: 特殊的二叉树 二叉树的性质 二叉树的存储结构 二叉树的创建 二叉树遍历 前序: 中序: 后序: 计算结点数 计算叶子结点数 计算树的高度(深度) 计算第K层结点数 概念: 一颗…

一封来自北京软协的感谢信

日前,北京软件和信息服务业协会(以下简称北软协)向酷雷曼(北京同创蓝天云科技有限公司)发来感谢信,以表彰和感谢同创蓝天对北软协及行业的全方位支持和卓越贡献。 作为北软协理事会会员单位,酷雷…

探索“超级服务器” TON:SDK 应用与开发入门

TON 是一个由多个组件构成的去中心化和开放的互联网平台,聚焦于实现广泛的跨链互操作性,同时在高可扩展性的安全框架中运作。TON 区块链被设计为分布式超级计算机或“超级服务器(superserver)”,旨在提供各种产品和服务…

借助3D文档控件Aspose.3D,用Java 创建 3D 场景

3D 场景是在计算机上显示 3D 形状的一种方式。在本指南中,我们将学习如何使用 Java 创建 3D 场景,而不需要任何特殊的 3D 软件。之后,我们将以FBX文件格式保存 3D 场景,这是共享 3D 内容的常见方式。那么,让我们开始吧…

浅学设计模式

目录 1、设计模式简介 2、⭐设计模式分类 3、⭐单例模式有哪几种实现 4、代理模式与其实现方式 1、设计模式简介 设计模式(Design Pattern)是一套被广泛接受并被证明有效的面向对象软件设计的指导原则和经验总结。它们提供了解决常见软件设计问题的…

【漏洞复现】金和OA任意文件读取漏洞

Nx01 产品简介 金和数字化智能办公平台(简称JC6)是一款结合了人工智能技术的数字化办公平台,为企业带来了智能化的办公体验和全面的数字化转型支持。同时符合国家信创认证标准,支持组织数字化转型,实现业务流程的数字化…

NET Core使用SkiaSharp生成二维码

在.NET 6之前我们一直是使用QRCoder来生成二维码(QRCoder是一个非常强大的生成二维码的组件,用到了System.Drawing.Common 包),然后从.NET 6开始,当为非 Windows 操作系统编译引用代码时,平台分析器会发出编…

linux常用命令-sed(流编辑器)

**sed(流编辑器)常用命令** sed 是一个强大的文本处理工具,常用于在文本流中进行替换、删除、插入等操作。以下是一些常见的 sed 命令: 1. **替换文本**: - s/old/new/g:将文本中所有匹配 "old"…