当前位置: 首页 > news >正文

简单 Python 爬虫程序设计

爬虫是获取网页数据的常用工具,我们一起来设计一个基于  requests  和  BeautifulSoup  的简单爬虫,它可以获取网页内容并提取文本信息。

 

 

所需库安装

 

首先需要安装两个必要的库:

 

pip install requests beautifulsoup4

 

 

完整代码

 

import requests

from bs4 import BeautifulSoup

import time

import random

import os

 

def simple_crawler(url, save_dir="crawled_data"):

    """

    简单网页爬虫程序

    :param url: 要爬取的网页URL

    :param save_dir: 保存数据的目录

    :return: 爬取的文本内容

    """

    try:

        # 模拟浏览器请求头,避免被识别为爬虫

        headers = {

            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

        }

        

        # 发送GET请求

        response = requests.get(url, headers=headers, timeout=10)

        

        # 检查请求是否成功

        if response.status_code == 200:

            # 设置正确的编码(处理中文乱码)

            response.encoding = response.apparent_encoding

            

            # 使用BeautifulSoup解析HTML

            soup = BeautifulSoup(response.text, 'html.parser')

            

            # 提取所有文本内容

            all_text = soup.get_text()

            

            # 创建保存目录(如果不存在)

            if not os.path.exists(save_dir):

                os.makedirs(save_dir)

            

            # 保存内容到文件

            filename = f"{save_dir}/{url.split('//')[-1].split('/')[0].replace('.', '_')}_{int(time.time())}.txt"

            with open(filename, 'w', encoding='utf-8') as f:

                f.write(all_text)

            

            print(f"成功爬取并保存内容到 {filename}")

            return all_text

        else:

            print(f"请求失败,状态码: {response.status_code}")

            return None

    

    except requests.exceptions.RequestException as e:

        print(f"请求异常: {e}")

        return None

    except Exception as e:

        print(f"发生错误: {e}")

        return None

 

if __name__ == "__main__":

    # 要爬取的网址(请替换为你想爬取的合法网址)

    target_url = "https://example.com"

    

    # 执行爬取

    content = simple_crawler(target_url)

    

    if content:

        # 打印前500个字符(可选)

        print(f"\n爬取内容预览:\n{content[:500]}...")

 

 

代码功能解析

 

这个爬虫程序主要包含以下几个部分:

 

- 请求头设置:模拟浏览器请求头,降低被网站反爬机制识别的概率

- 请求发送:使用 requests 库发送HTTP GET请求获取网页内容

- 内容解析:通过 BeautifulSoup 解析HTML,提取纯文本内容

- 数据保存:将爬取的内容保存到本地文本文件中

- 异常处理:包含请求异常和通用异常处理,增强程序稳定性

 

使用注意事项

 

1. 替换URL:将代码中的 https://example.com 替换为你想爬取的合法网址

2. 遵守规则:爬取前请阅读网站的 robots.txt ,遵守网站爬取规则

3. 控制频率:代码中可添加 time.sleep(random.uniform(1, 3)) 来控制爬取间隔,避免对服务器造成压力

4. 合法用途:请确保爬取行为用于学习、研究等合法用途,避免侵犯他人权益。

http://www.dtcms.com/a/266858.html

相关文章:

  • 递推|递归|分治
  • Python 办公实战:用 python-docx 自动生成 Word 文档
  • 【ROS2 自动驾驶学习】01-工具链的安装
  • 过滤器应用
  • MySQL分布式ID冲突详解:场景、原因与解决方案
  • Hive UDF 开发实战:MD5 哈希函数实现
  • 每周资讯 | Krafton斥资750亿日元收购日本动画公司ADK;《崩坏:星穹铁道》新版本首日登顶iOS畅销榜
  • 只出现一次的数字2
  • 暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目
  • HarmonyOS免密认证方案 助力应用登录安全升级
  • 使用 DigitalPlat 免费搭配 Cloudflare Tunnel 实现飞牛系统、服务及 SSH 内网穿透教程
  • 计算机视觉---RealSense深度相机技术
  • 【C++类和对象解密】面向对象编程的核心概念(中)
  • Android Studio-Git的使用指南
  • 金融平衡术:创新与合规的突围之路
  • Word和Excel批量转PDF新方法,操作简单
  • 仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器
  • RabbitMQ 高级特性之死信队列
  • VS CodeC51 单片机开发环境搭建
  • 猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
  • Web前端工程化
  • 网安系列【4】之OWASP与OWASP Top 10:Web安全入门指南
  • 一探 3D 互动展厅的神奇构造​
  • Querybook:一个开源大数据查询分析工具
  • Workflow or 自主智能体?网易CoreAgent如何打造企业级智能体平台新范式
  • OpenSearch添加仪表盘(elastic、es)
  • 全面分析软考《系统分析师》和《系统架构设计师》论文差异
  • go基础语法10问(2)
  • MySQL 事务详解:从基础操作到隔离级别与 MVCC 原理
  • vue3引入海康监控视频组件并实现非分屏需求一个页面同时预览多个监控视频;