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

Python学习第二十一天

爬虫

概念

        网络爬虫(Web Crawler),也称为网络蜘蛛(Web Spider),是一种自动化程序,用于从互联网上抓取数据。爬虫通过模拟浏览器行为,访问目标网站并提取所需的信息,然后将这些信息存储或进一步处理。例如我们常见的12306网站为什么总是票没有,它每天遭受的请求成百上千万次,还有天气,一些组件比如手表上的天气怎么获取的也是根据爬虫获取到的。

理解

  • 工作原理:

    1. 发送请求:爬虫向目标网站发送 HTTP 请求(通常是 GET 或 POST 请求),获取网页的 HTML 内容。

    2. 解析内容:使用解析库(如 BeautifulSouplxml)解析 HTML,提取所需的数据(如文本、链接、图片等)。

    3. 存储数据:将提取的数据保存到本地文件(如 CSV、JSON、数据库)或进行进一步处理。

    4. 遍历链接:通过提取的链接,递归地访问其他页面,实现自动化抓取。

  • 核心组件:

    • 请求库:如 requestsaiohttp,用于发送 HTTP 请求。

    • 解析库:如 BeautifulSouplxmlpyquery,用于解析 HTML 或 XML。

    • 存储模块:如 csvjsonpymysql,用于存储数据。

    • 调度器:用于管理爬虫的抓取顺序和频率。

    • 反爬虫处理:如设置请求头、使用代理 IP、模拟登录等。

  • 爬虫的分类:

    • 通用爬虫:如搜索引擎的爬虫,抓取整个互联网的内容。

    • 聚焦爬虫:针对特定网站或特定内容进行抓取。

    • 增量式爬虫:只抓取网站更新的内容。

    • 深层爬虫:抓取需要登录或动态加载的内容。

用途

爬虫的应用非常广泛,以下是一些常见的用途:

  • 数据采集:

    • 抓取商品价格、新闻、社交媒体内容等。

    • 用于市场调研、竞品分析、舆情监控等。

  • 搜索引擎:

    • 搜索引擎(如 Google、百度)使用爬虫抓取网页内容,建立索引。

  • 数据分析:

    • 抓取大量数据后,进行数据清洗、分析和可视化。

    • 例如,抓取股票数据并进行分析预测。

  • 自动化任务:

    • 自动抓取天气、航班、电影排期等信息。

    • 自动填写表单、提交数据。

  • 机器学习:

    • 抓取数据用于训练机器学习模型。

    • 例如,抓取图片用于图像识别模型。

  • 学术研究:

    • 抓取学术论文、专利、文献等数据。

  • 内容聚合:

    • 抓取多个网站的内容,整合到一个平台。

    • 例如,新闻聚合网站。

合法性

爬虫的使用需要遵守相关法律法规和网站的爬取规则:

  • 遵守 Robots 协议:在爬取网站前,检查 robots.txt 文件,确保爬虫行为符合网站的规则。

  • 避免对网站造成负担:设置合理的请求频率,避免对目标网站的服务器造成过大压力。

  • 尊重隐私和数据安全:不要抓取敏感信息或侵犯用户隐私。

  • 遵守版权法:抓取的内容不能用于商业用途,除非获得授权。

常用工具和框架

  • 基础库

    • requests:发送 HTTP 请求。

    • BeautifulSoup:解析 HTML。

    • lxml:高性能的 HTML/XML 解析库。

    • re:正则表达式,用于提取复杂文本(前面学习过了 一个看下正则获取内容)。

  • 进阶工具

    • Selenium:模拟浏览器行为,适用于动态加载的网页。

    • Pyppeteer:基于 Chromium 的无头浏览器。

    • aiohttp:异步 HTTP 请求库,提高爬虫效率。

  • 框架

    • Scrapy:强大的爬虫框架,支持分布式爬取、数据管道等功能。

    • PySpider:分布式爬虫框架,适合大规模数据抓取。

挑战

  • 反爬虫机制:

    • IP 封禁、验证码、动态加载、请求频率限制等。

    • 解决方法:使用代理 IP、设置请求头、模拟登录、降低请求频率。

  • 动态内容:

    • 一些网站使用 JavaScript 动态加载内容。

    • 解决方法:使用 Selenium 或 Pyppeteer 模拟浏览器行为。

  • 数据清洗:

    • 抓取的数据可能包含噪声或无效信息。

    • 解决方法:使用正则表达式、数据清洗工具(如 pandas)。

  • 法律风险:

    • 爬虫可能违反网站的使用条款或相关法律。

    • 解决方法:遵守法律法规,获取授权。

第一个程序

        使用Beautiful Soup来完成第一个程序。

概念

        官方概念:Beautiful Soup是一个 可以从 HTML 或 XML 文件中提取数据的 Python 库。它能用你喜欢的解析器和习惯的方式实现 文档树的导航、查找、和修改。它会帮你节省数小时甚至数天的工作时间。

安装

# 需要requests 来配合使用
pip install beautifulsoup4 requests

使用

import requests
from bs4 import BeautifulSoup

# 发送HTTP请求 使用requests来获取百度的
url = 'https://www.baidu.com'
response = requests.get(url)
# 设置编码
response.encoding = 'utf-8'
# 检查请求是否成功
if response.status_code == 200:
    # print(response.text)
    # 解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')
    # print('html内容为: %s' % soup)
    # 提取数据
    title = soup.title.string
    print(f'网页标题: {title}')

    # 提取所有链接
    for link in soup.find_all('a'):
        print(link.get('href'))
else:
    print(f'请求失败,状态码: {response.status_code}')

相关文章:

  • 风暴潮、潮汐潮流模拟:ROMS模型如何精准预测海洋现象?
  • 云盘搭建笔记
  • 《Python实战进阶》No42: 多线程与多进程编程详解(下)
  • 四种事件类型
  • 自适应柔顺性策略:扩散引导控制中学习近似的柔顺
  • Python中的null是什么?
  • 【C++进阶】深入探索类型转换
  • (electron 报错)TypeError: Cannot read property ‘upgrade‘ of undefined
  • Linux驱动开发-①中断②阻塞、非阻塞IO和异步通知
  • VLAN:逻辑隔离冲突网络的详细讲解
  • Android第四次面试(Java基础篇)
  • Unity动画片段丢失(AnimationClip),如何进行重新绑定
  • OpenCV旋转估计(5)图像拼接的一个函数waveCorrect()
  • 【云上CPU玩转AIGC】——腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力
  • 基于Spring Boot的本科生交流培养管理平台的设计与实现(LW+源码+讲解)
  • c++ XML库用法
  • 【机器学习-模型评估】
  • 【人工智能】如何理解transformer中的token?
  • 以高斯(GaussDB) 为例, 在cmd 命令行连接数据,操作数据库,关闭数据库的详细步骤
  • Jenkins 容器化部署 uniapp H5 项目
  • 德国总理默茨发表首份政府声明:将提升国防能力,全力发展经济
  • 一个多月来上海交大接连“牵手”三区,在这些方面进行区校合作
  • 巴基斯坦全国航班仍持续延误或取消
  • 气象干旱黄色预警继续:陕西西南部、河南西南部等地特旱
  • 850亿元!2025年中央金融机构注资特别国债(一期)拟第一次续发行
  • 丰田汽车:美国关税或导致4、5月损失1800亿日元,新财年净利润下滑三成