[原创技术分享]python百度热搜榜爬虫

部署运行你感兴趣的模型镜像

Python爬虫实战:爬取百度热搜榜的技术分析与实现

一、项目概述

本文将介绍一个Python的爬虫程序,用于抓取百度实时热搜榜数据并保存到本地文件。这个爬虫适合初学者学习基本的网页抓取技术,涵盖了数据请求、数据解析、数据储存和基本的反反爬策略。btw这是我在以前高一闲暇时候写的一个爬虫脚本哦

二、技术要点解析

1. 咱们先来介绍一下核心组件,有三个。其中requests库是python爬虫的核心;lxml库的xpath则是用来解析提取requests请求回来的web前端源码。

- requests库:用于发送HTTP请求获取网页内容
- lxml库:用于解析HTML文档和提取数据
- os和time库:用于文件操作和时间处理

2. 关键实现细节

 (1)数据请求 

resp = requests.get(url=url,headers=Spider.Headers)

个人认为,这是整个python爬虫的核心。

基本的反反爬策略:请求头设置

Headers = {
    'Referer': 'https://top.baidu.com/board?tab=realtime',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0... Firefox/91.0',
}

咱在请求时设置合理的请求头可以降低被反爬的风险。我们一般可以在浏览器点击键盘f12打开开发者模式来查看User-Agent和Referer。

 (2) 数据提取

html = etree.HTML(resp.text)
title = html.xpath("//div[@class='c-single-text-ellipsis']/text()")

使用XPath定位热搜标题元素。

 (3) 数据存储

if not os.path.exists(DirName):
    os.mkdir(DirName)
with open(Path, 'a') as f:
    f.write(time.ctime()+"\n")
for i,j in enumerate(li,start=1):
    with open(Path,'a') as f:
        f.write(str(i)+"、 "+j+"\n")
return True

采用追加模式写入文件,每条热搜按序号排列保存。

这里采用的是写入txt文件的方式,其他的储存方式还有json文件、csv文件和写入数据库。

这里用了enumerate函数,有想学习的小伙伴可以在站内搜索哦 很ez的!

三、完整代码

下面放一下源码。

import requests
import time
import os
from lxml import etree
class Spider:
    Headers = {
        'Referer': 'https://top.baidu.com/board?tab=realtime',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0',
    }
    @staticmethod
    def getData(url: str)->list[str]:
        resp = requests.get(url=url,headers=Spider.Headers)
        html = etree.HTML(resp.text)
        title = html.xpath("//div[@class='c-single-text-ellipsis']/text()")
        return title
    @staticmethod
    def saveFile(li:list[str])->bool:
        DirName = "百度热搜榜爬虫"
        FileName = "百度热搜榜爬虫%s.txt"%time.strftime("%Y_%m_%d_%H_%M_%S")
        Path = DirName + '/' + FileName
        if not os.path.exists(DirName):
            os.mkdir(DirName)
        with open(Path, 'a') as f:
            f.write(time.ctime()+"\n")
        for i,j in enumerate(li,start=1):
            with open(Path,'a') as f:
                f.write(str(i)+"、 "+j+"\n")
        return True
def main()->int:
    url = "https://top.baidu.com/board?tab=realtime"
    if Spider.saveFile(li=Spider.getData(url=url))==True:
        print("爬取成功...")
    return 0
if __name__ == '__main__':
    main()

四、总结

这个爬虫虽然简单,但包含了爬虫的基本要素:请求数据、解析数据和存储数据,涵盖了爬虫的基本要素。通过学习这个案例,可以掌握:
1. 使用requests获取网页内容
2. 使用lxml和XPath解析HTML
3. 基本的文件操作
4. Python面向对象的编程方式

对于想学习爬虫的初学者来说,这是一个很好的入门项目。后续可以在此基础上增加更多的功能,如定时爬取、数据可视化等。

(纯原创技术分享,请勿用于非法用途!!!)

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值