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

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}')

http://www.kler.cn/a/597678.html

相关文章:

  • Java 输入1~100的整数,当读入负数时结束,统计输出每个数的数量
  • Git Flow 分支管理策略
  • 运算符重载(关键字operator的使用)
  • 【STM32单片机】#2 GPIO输出
  • 鼠标拖拽实现DIV尺寸修改效果实现
  • 零基础本地部署 ComfyUI+Flux.1 模型!5 分钟搭建远程 AI 绘图服务器(保姆级教程)
  • 六西格玛遇上Python:统计学的高效实践场
  • 基于SpringBoot的图书借阅小程序+LW参考示例
  • Matplotlib完全指南:数据可视化从入门到实战
  • upload-labs靶场学习记录2
  • 再学:区块链基础与合约初探 EVM与GAS机制
  • java开发接口中,响应速度率成倍数提高的方法与策略
  • 基于BClinux8部署Ceph 19.2(squid)集群
  • SQL——创建临时表方法总结
  • 城市街拍人像自拍电影风格Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • Opencv计算机视觉编程攻略-第一节 图像读取与基本处理
  • 百度SEO和必应SEO优化方法
  • 【css酷炫效果】纯CSS实现科技感网格背景
  • JVM运行时数据区内部结构难记?一个例子优化记忆
  • 摄影工作室预约管理系统基于Spring BootSSM