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

如何用Python编程实现一个简单的Web爬虫?

 

一、核心库介绍

 

- requests:发送HTTP请求,获取网页内容(需安装: pip install requests )。

- BeautifulSoup:解析HTML/XML,提取数据(需安装: pip install beautifulsoup4 )。

 

二、实现步骤

 

1. 发送请求:用 requests.get() 获取目标网页的HTML源码。

2. 解析内容:用 BeautifulSoup 解析HTML,定位需要的标签。

3. 提取数据:通过标签名、类名、ID等提取文本或属性(如链接、图片地址)。

4. 保存结果:将提取的数据保存为文本、CSV或其他格式。

 

三、示例代码(爬取网页标题和链接)

 

import requests

from bs4 import BeautifulSoup

 

# 目标网页URL(以豆瓣电影首页为例,实际爬取需遵守网站robots协议)

url = "https://movie.douban.com/"

 

# 1. 发送请求,获取HTML

response = requests.get(url)

# 检查请求是否成功(状态码200表示成功)

if response.status_code == 200:

    html = response.text

else:

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

    exit()

 

# 2. 解析HTML

soup = BeautifulSoup(html, "html.parser") # 使用html.parser解析器

 

# 3. 提取数据(以提取热门电影标题和链接为例)

# 定位包含电影信息的标签(需根据网页实际结构调整选择器)

movie_list = soup.select(".billboard-bd li a") # 假设标签结构为<li><a>...</a></li>

 

# 4. 处理并打印结果

for movie in movie_list:

    title = movie.get_text() # 获取标签内的文本(电影标题)

    link = movie["href"] # 获取a标签的href属性(电影链接)

    print(f"标题:{title}\n链接:{link}\n")

 

 

四、注意事项

 

1. 遵守规则:检查网站的 robots.txt (如 https://example.com/robots.txt ),不爬取禁止的内容。

2. 反爬处理:部分网站会限制爬虫,可添加请求头( headers )模拟浏览器,例如:

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"

}

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

 

3. 频率控制:添加延迟(如 time.sleep(1) ),避免频繁请求给服务器造成压力。

4. 动态内容:若网页内容由JavaScript动态生成,可能需要使用 selenium 等工具模拟浏览器渲染。

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

相关文章:

  • Echarts学习方法分享:跳过新手期,光速成为图表仙人!
  • 【Lucene/Elasticsearch】 数据类型(ES 字段类型) | 底层索引结构
  • 易混淆英语单词对比解析与记忆表
  • 股票的k线
  • BKD 树(Block KD-Tree)Lucene
  • 以太坊重放攻击
  • 特辑:Ubuntu,前世今生
  • 关于学习docker中遇到的问题
  • AI领域的黄埔军校:OpenAI是新一代的PayPal Mafia,门生故吏遍天下
  • 可以用一台伺服电机控制多台丝杆升降机联动使用吗
  • 类和对象—多态
  • C语言:20250712笔记
  • SpringBoot集合Swagger2构建可视化API文档
  • P2619 [国家集训队] Tree I
  • 【Datawhale AI夏令营】Task2 笔记:MCP Server开发的重难点
  • 【LeetCode 热题 100】98. 验证二叉搜索树——(解法一)前序遍历
  • Python 三大高频标准库实战指南——json · datetime · random 深度解析
  • 【Java入门到精通】(二)Java基础语法(上)
  • 27. 移除元素
  • 【android bluetooth 协议分析 07】【SDP详解 1】【SDP 介绍】
  • 19th Day| 530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数, 236.二叉树的最近公共祖先
  • springboot3X 整合高版本mybatisplus
  • pyqt5绘制矩形和线条
  • 【从零开始编写数据库:基于Python语言实现数据库ToyDB的ACID特性】
  • C语言<数据结构-单链表>(收尾)
  • Windows 开启和关闭 Administrator 用户的方法
  • 软考高级系系统分师和架构师常考知识点总结三
  • Typecho博客系统与WebSocket实时通信整合指南
  • 网络安全初级--搭建
  • GPU编程入门:CUDA与OpenCL全面解析