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

爬取百度热搜榜


文章目录

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


前言

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

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


一、展示哪些东西

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

Python 爬虫之简单的爬虫(二)_第1张图片

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

Python 爬虫之简单的爬虫(二)_第2张图片


二、基本流程

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

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

三、前期数据获取

1.引入库

代码如下:

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

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

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

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

记得看注释哦


2.请求解析获取

代码如下:

# 目标网页地址
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")

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

其它代码还好说,主要是最后一行代码,看下图应该就明白了(获取的也就是这个标签下的内容)。
Python 爬虫之简单的爬虫(二)_第3张图片


四、后期数据处理

1.获取保存

代码如下:

# 进行切片处理无用信息,并用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方便后期的数据处理,减少难度。
    Python 爬虫之简单的爬虫(二)_第4张图片
  • 第二步:打开先打开一个文本文档,为了后面一边遍历数据内容一边写入文件。
  • 第三步:就像开头展示的,把那五种数据类型获取到。
  • 第四步:把获取到数据整理一下写入到文件中。
    Python 爬虫之简单的爬虫(二)_第5张图片

总结

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

你可能感兴趣的:(Python,爬虫,python,爬虫,开发语言)