初学者如何用 Python 写第一个爬虫?

编写第一个 Python 爬虫并不难,以下是一个简单的步骤指南,帮助从零开始。

1. 安装必要的库

首先,你需要安装 requestsBeautifulSoup 这两个库。requests 用于发送 HTTP 请求,BeautifulSoup 用于解析 HTML 内容。

bash 复制代码
pip install requests beautifulsoup4

2. 导入库

在你的 Python 脚本中导入所需的库。

python 复制代码
import requests
from bs4 import BeautifulSoup

3. 发送 HTTP 请求

使用 requests.get() 方法发送一个 HTTP GET 请求来获取网页内容。

python 复制代码
url = 'https://example.com'
response = requests.get(url)

4. 检查请求是否成功

你可以通过检查 response.status_code 来确保请求成功(状态码 200 表示成功)。

python 复制代码
if response.status_code == 200:
    print('请求成功')
else:
    print('请求失败', response.status_code)

5. 解析 HTML 内容

使用 BeautifulSoup 解析 HTML 内容,并提取你感兴趣的数据。

python 复制代码
soup = BeautifulSoup(response.text, 'html.parser')

6. 提取数据

假设你想提取网页的标题,可以使用以下代码:

python 复制代码
title = soup.title.string
print('网页标题:', title)

如果你想提取所有的链接,可以这样做:

python 复制代码
for link in soup.find_all('a'):
    print(link.get('href'))

7. 完整示例代码

以下是一个完整的示例代码,它会抓取一个网页的标题和所有链接:

python 复制代码
import requests
from bs4 import BeautifulSoup

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

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

# 检查请求是否成功
if response.status_code == 200:
    print('请求成功')
    
    # 解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 提取网页标题
    title = soup.title.string
    print('网页标题:', title)
    
    # 提取所有链接
    print('网页链接:')
    for link in soup.find_all('a'):
        print(link.get('href'))
else:
    print('请求失败', response.status_code)

8. 运行代码

将上述代码保存为一个 .py 文件(例如 first_spider.py),然后在终端或命令行中运行:

bash 复制代码
python first_spider.py

9. 进一步学习

  • 学习如何处理更复杂的 HTML 结构。
  • 学习如何使用正则表达式提取数据。
  • 学习如何处理分页、表单提交等更复杂的爬虫任务。
  • 学习如何使用 Scrapy 框架来构建更强大的爬虫。

注意事项

  • 遵守目标网站的 robots.txt 文件中的规则。
  • 不要过度请求,以免给服务器带来负担。
  • 确保你有权抓取和使用目标网站的数据。

通过以上步骤,能够编写并运行你的第一个 Python 爬虫。

相关推荐
SilentSamsara3 小时前
MLflow 实验追踪与模型注册:从实验到生产的可复现工作流
开发语言·人工智能·pytorch·python·青少年编程
曲幽3 小时前
写爬虫时用了代理还被封?Python 代理的那些隐藏坑,我替你踩明白了
python·http·https·proxy·socks·requests·socks5·proxies
装不满的克莱因瓶3 小时前
掌握多头自注意力机制(Multi-Head Self-Attention)——Transformer 强大表达能力的核心来源
人工智能·python·深度学习·数学·ai·transformer
dongf20193 小时前
R语言朴素贝叶斯算法---iris数据集
开发语言·算法·数据分析·r语言
下班走回家3 小时前
RAG 技术的进化:从朴素检索到 Agentic RAG
开发语言·人工智能·python
weixin_307779133 小时前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
Johnstons3 小时前
网页加载到一半卡住?视频看到关键处花屏?可能是丢包在作祟
开发语言·php·音视频·弱网测试·网络损伤
hoiii1873 小时前
C# Txt/Excel/Access 导入导出工具
开发语言·c#·excel
代码中介商3 小时前
C++ 智能指针完全指南(二):shared_ptr 深度详解
开发语言·c++
用什么都重名3 小时前
Python文本匹配利器:FlashText与RapidFuzz深度对比
python·flash text·rapidfuzz