15分钟学 Python 第36天 :Python 爬虫入门(二)

Python 爬虫入门:环境准备

在进行Python爬虫的学习和实践之前,首先需要准备好合适的开发环境。本节将详细介绍Python环境的安装、必要库的配置、以及常用工具的使用,为后续的爬虫编写奠定坚实的基础。

1. 环境准备概述

1.1 为什么环境准备重要?

环境准备是确保爬虫能够顺利运行的关键。一个良好的开发环境可以提高代码的运行效率,减少调试时间,同时确保所需的库和工具都是最新版本,从而避免潜在的兼容性问题。

1.2 环境准备的步骤

环境准备可以分为几个主要步骤,具体包括:

  1. 安装Python
  2. 配置虚拟环境
  3. 安装必要的库
  4. 熟悉开发工具

2. 安装Python

2.1 Python简介

Python是一种高级编程语言,因其简洁易读的语法和强大的库支持而受到广泛欢迎。Python 3是当前的主流版本,推荐使用Python 3.x进行爬虫开发。

2.2 安装步骤

Windows 环境
  1. 下载Python

    • 前往Python官网下载适合Windows的最新版本安装包(64位或32位)。
  2. 执行安装

    • 双击下载的安装包,在安装界面勾选“Add Python to PATH”,然后点击“Install Now”进行安装。
  3. 验证安装

    • 打开命令提示符(CMD),输入以下命令:
      python --version
      
    • 如果显示Python的版本号,即表示安装成功。
macOS 环境
  1. 使用Homebrew安装

    • 打开终端,输入以下命令:
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      brew install python
      
  2. 验证安装

    • 输入以下命令检查安装:
      python3 --version
      
Linux 环境
  1. 使用包管理器安装

    • 对于Debian/Ubuntu系统:
      sudo apt update
      sudo apt install python3
      
  2. 验证安装

    • 输入以下命令:
      python3 --version
      

2.3 Python版本管理

在开发多个项目时,版本管理十分重要。推荐使用pyenv来管理Python版本,具体步骤如下:

安装pyenv
  1. 在Linux或macOS上,安装pyenv

    curl https://pyenv.run | bash
    
  2. 将以下内容添加到你的shell配置文件中(如~/.bashrc~/.zshrc):

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  3. 重启终端。

使用pyenv安装Python
pyenv install 3.x.x  # 替换为具体版本号
pyenv global 3.x.x

3. 配置虚拟环境

3.1 什么是虚拟环境

虚拟环境是一个独立的Python环境,可以为每个项目隔离依赖库,避免不同项目间的库版本冲突。

3.2 创建虚拟环境

使用venv模块轻松创建虚拟环境。以下是步骤:

创建虚拟环境
  1. 打开命令提示符或终端,选择项目目录。
  2. 输入以下命令创建虚拟环境:
    python -m venv myenv   # myenv为虚拟环境名称
    
激活虚拟环境
  • Windows

    myenv\Scripts\activate
    
  • macOS/Linux

    source myenv/bin/activate
    
验证激活状态

输入以下命令查看当前环境:

which python  # Linux/macOS
where python  # Windows

3.3 退出虚拟环境

输入deactivate退出当前虚拟环境。

4. 安装必要的库

爬虫常用的库主要包括:requestsBeautifulSouplxml、和pandas等。通过pip安装这些库。

4.1 安装库的步骤

确保虚拟环境已激活,输入以下命令安装库:

pip install requests beautifulsoup4 lxml pandas

4.2 查看已安装库

可通过以下命令查看已安装的库和版本:

pip list

4.3 需求文件的创建及使用

在项目中,有时需要管理特定依赖库版本,创建requirements.txt文件:

pip freeze > requirements.txt

然后可通过以下命令安装requirements.txt中列出的依赖:

pip install -r requirements.txt

5. 常用开发工具

5.1 文本编辑器

推荐使用以下文本编辑器或IDE进行Python开发:

工具特点
PyCharm功能强大,智能提示,支持多种框架
VS Code轻量级,扩展性强,支持多种语言
Sublime Text速度快,界面简洁
Jupyter Notebook适合数据分析与可视化,支持交互式运行

5.2 安装和使用PyCharm

  1. 在JetBrains官网下载PyCharm Community版。
  2. 安装并启动PyCharm。
  3. 创建新项目,选择Python解释器为刚才创建的虚拟环境。

5.3 安装和使用VS Code

  1. 在Visual Studio Code官网下载并安装。
  2. 安装Python扩展,支持Python语言的编辑和调试,使用命令面板(Ctrl + Shift + P)执行Python: Select Interpreter选择虚拟环境。

6. 示例代码:简单爬虫

在确保环境准备好后,下面提供一个简单的爬虫示例:

6.1 示例代码

以下代码示例演示如何使用requestsBeautifulSoup抓取网页的标题和所有超链接。

import requests
from bs4 import BeautifulSoup

# 目标网站URL
url = 'https://example.com'

# 发送GET请求
response = requests.get(url)

# 检查响应状态
if response.status_code == 200:
    # 解析HTML文档
    soup = BeautifulSoup(response.text, 'lxml')
    
    # 提取网页标题
    title = soup.title.string
    print(f"网页标题: {title}")
    
    # 提取所有链接
    links = soup.find_all('a')
    for link in links:
        href = link.get('href')
        text = link.string
        print(f"链接地址: {href}, 链接文本: {text}")
else:
    print("请求失败,状态码:", response.status_code)

6.2 代码运行流程图

以下是程序运行的流程图:

+------------------+
|   发送请求      |
| (requests.get()) |
+--------+---------+
         |
         v
+------------------+
|   获取响应      |
| (response.text)  |
+--------+---------+
         |
         v
+------------------+
|   解析网页内容  |
| (BeautifulSoup)  |
+--------+---------+
         |
         v
+------------------+
|   提取数据      |
| (soup.find())    |
+--------+---------+
         |
         v
+------------------+
|   存储数据      |
| (打印到终端)    |
+------------------+

6.3 代码结果展示

当运行上述代码时,若目标网页正常访问,将返回该网页的标题和所有链接,如下示例输出:

网页标题: Example Domain
链接地址: https://www.iana.org/ , 链接文本: More information...

7. 学习小结

通过本节内容,我们详细介绍了Python爬虫环境的准备,包括Python的安装、虚拟环境的创建与管理、常用库的安装以及开发工具的选择。同时,提供了一个简单爬虫的示例,帮助理解如何在准备好的环境中进行爬虫开发。

环境准备是学习爬虫的基础,只有在配置好开发环境的前提下,才能高效地编写和调试爬虫代码。在实践过程中,请注意遵循法律和道德规范,合理使用爬虫技术。


在这里插入图片描述
怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/886978.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot投稿和稿件处理系统设计与实现

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据量:3k 想要进一步了解,请联系。 DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种…

订阅ROS2中相机的相关话题并保存RGB、深度和点云图

系统:Ubuntu22.04 ROS2版本:ROS2 humble 1.订阅ROS2中相机的相关话题并保存RGB图、深度图和点云图 ros2 topic list/stellar_1/rgb/image_raw /camera/depth/image_raw /stellar_1/points2CMakeLists.txt cmake_minimum_required(VERSION 3.15) projec…

建筑资质的未来发展趋势

🏗️建筑资质是建筑企业进入市场的通行证,它不仅关系到企业的竞争力,也影响着整个建筑行业的健康发展。随着政策的调整和技术的进步,建筑资质管理正面临着新的变革。 1. 资质管理的数字化转型:🌐 随着信息技…

Gaussian-splatting 项目环境配置笔记(Win11)

如果你是配置别的项目的过程中用到了3D GS相关的内容,然后这部分内容环境一直配不好,也可以跟随这个博客配一下环境,配完后起码3D GS部分就搞定了。 文章目录 概述项目链接:VS2019直接下载链接CUDA不同版本下载链接安装Condasetup…

63.5 注意力提示_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录注意力提示生物学中的注意力提示查询、键和值注意力的可视化使用 show_heatmaps 显示注意力权重代码示例 代码解析结果 小结练习 注意力提示 🏷sec_attention-cues 感谢读者对本书的关注,因为读者的注意力是一种稀缺…

【MATLAB2024b】安装离线帮助文档(windows)

文章目录 一、在 MATLAB 设置中安装二、从math works 网站下载ISO:给无法联网的电脑安装三、重要说明 版本:matlab 2024b(或者大于等于2023a) 所需空间:10~15 GB 平台:Windows 需要注册math works账号。 一…

深度学习-19-深入理解并训练自己的Tokenizer分词器

文章目录 1 tokenization是什么2 Tokenization方法简介2.1 单词级的Tokenization2.2 子词Tokenization技术2.3 举例说明2.3.1 字符级别2.3.2 词语级别2.3.3 子词级别3 训练自己的Tokenizer3.1 下载数据集3.2 huggingface的Tokenizer实现3.3 my-tokenizer.json字段说明3.4 验证一…

鸿蒙harmonyos next flutter混合开发之开发package

​​​​​​ 创建 package flutter create --templatepackage mypackage package代码如下: 创建hello_world.dart ///HelloWorld返回hello world 拼接param class HelloWorld {String helloWorld(String param) > "hello world ${param}"…

【视频目标分割-2024CVPR】Putting the Object Back into Video Object Segmentation

Cutie 系列文章目录1 摘要2 引言2.1背景和难点2.2 解决方案2.3 成果 3 相关方法3.1 基于记忆的VOS3.2对象级推理3.3 自动视频分割 4 工作方法4.1 overview4.2 对象变换器4.2.1 overview4.2.2 Foreground-Background Masked Attention4.2.3 Positional Embeddings 4.3 Object Me…

CSS实现服务卡片

CSS实现服务卡片 效果展示 CSS 知识点 回顾整体CSS知识点灵活运用CSS知识点 页面整体布局 <div class"container"><div class"card"><div class"box"><div class"icon"><ion-icon name"color-pal…

Mac 卸载 IDEA 流程

1、现在应用程序中删除Idea 2、进入Library目录 cd /Users/zhengzhaoxiang/Library 3、删除IntelliJIdea2023.3&#xff08;根据自己的版本而定&#xff09;记得进去看下是否删除干净了 rm -rf Logs/JetBrains/IntelliJIdea2023.3 rm -rf Preferences/com.jetbrains.intel…

蘑菇分类检测数据集 21类蘑菇 8800张 带标注 voc yolo

蘑菇分类检测数据集 21类蘑菇 8800张 带标注 v 蘑菇分类检测数据集 21类蘑菇 8800张 带标注 voc yolo 蘑菇分类检测数据集介绍 数据集名称 蘑菇分类检测数据集 (Mushroom Classification and Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目标检测模型…

python爬虫 - 初识爬虫

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、爬虫的关键概念 &#xff08;一&#xff09;HTTP请求与响应 &#xff0…

uni-app在线预览pdf

这里推荐下载pdf.js 插件 PDF.js - Browse Files at SourceForge.net 特此注意 如果报 Promise.withResolvers is not a function 请去查看版本兼容问题 降低pdf.js版本提高node版本 下载完成后 在 static 文件夹下新建 pdf 文件夹&#xff0c;将解压文件放进 pdf 文件…

基于SpringBoot+Vue的摄影社团管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

API接口开发系列文章:构建高效、安全与可扩展的API服务

前言 在当今的数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为连接不同系统、服务和应用的核心桥梁。无论是企业内部的数据交互&#xff0c;还是面向第三方的服务开放&#xff0c;API都扮演着至关重要的角色。本系列文章将深入探讨API接口开发的各个…

【nlp自然语言】知识图谱,全文检索,自然语言nlp,数据资产标签,集成管理平台

一、项目介绍 一款全源码&#xff0c;可二开&#xff0c;可基于云部署、私有部署的企业级知识库云平台&#xff0c;一款让企业知识变为实打实的数字财富的系统&#xff0c;应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台&#xff1f; 助力企业…

雷池 WAF 如何配置才能正确获取到源 IP

经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。 这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。 问题说明 默认情况下&#xff0c;雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题&#xff0c;雷池获取到的…

【Linux】进程地址空间(初步了解)

文章目录 1. 奇怪的现象2. 虚拟地址空间3. 关于页表4. 为什么要有虚拟地址 1. 奇怪的现象 我们先看一个现象&#xff1a; 为什么父子进程从“同一块地址中”读取到的值不一样呢&#xff1f; 因为这个地址不是物理内存的地址 &#xff0c;如果是物理内存的地址是绝对不可能出…