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

python:requests+beautifulSoup

核心比喻:一次完美的“情报获取”任务

  • requests:是你的 “外勤特工”。他的任务是前往指定地点(URL),取回一个“加密包裹”(网页响应),然后安全地带回来。他不关心包裹里是什么,只负责获取

  • BeautifulSoup:是你的 “密码破译专家”。他的工作是待在总部,等“外勤特工”带回包裹后,他负责打开解析这个包裹(HTML/XML内容),从中找出你需要的具体情报。

它们永远是协同工作的:requests 负责“拿”,BeautifulSoup 负责“拆”。


requests 库总结:网络世界的信使

1. 核心职责
用Python代码发送HTTP请求(访问网页、调用API等),并获取服务器的响应。

2. 安装

pip install requests

3. 核心用法与代码示例

  • 发送GET请求(最常用)
 ```pythonimport requestsurl = 'https://www.example.com'response = requests.get(url) ```
  • 检查响应状态 (response 对象)
    在你拿到 response 后,第一件事就是检查任务是否成功。
 ```pythonif response.status_code == 200:print("请求成功!")else:print(f"请求失败,状态码: {response.status_code}")```*   `200`: OK (成功)*   `404`: Not Found (未找到)*   `403`: Forbidden (被禁止)
  • 获取响应内容
 ```python# 获取HTML或文本内容 (字符串)html_content = response.text# 获取JSON内容 (自动转为Python字典/列表,用于API)json_data = response.json()# 获取二进制内容 (用于下载图片、文件等)image_content = response.content```
  • 定制请求(反爬虫与高级用法)
 ```pythonheaders = {'User-Agent': 'Mozilla/5.0 ...' # 伪装成浏览器}params = {'q': 'python', # URL参数,会变成 ...?q=python'page': 2}# 发送带有伪装和参数的请求response = requests.get(url, headers=headers, params=params)```
  • 错误处理
 ```pythontry:response = requests.get(url, timeout=5) # 设置超时response.raise_for_status() # 如果状态码不是2xx,会抛出异常except requests.exceptions.RequestException as e:print(f"网络请求出错: {e}")```

BeautifulSoup 库总结:HTML的解剖刀

1. 核心职责
解析HTML或XML文档,将一长串无序的字符串,转换成一个结构化的、可以轻松遍历和搜索的Python对象。

2. 安装

pip install beautifulsoup4

BeautifulSoup 只是一个解析器,它还需要一个“引擎”来工作。Python内置的 html.parser 就很好用。

3. 核心用法与代码示例

  • 创建“汤”(Soup)对象
    这是所有操作的第一步,requests 获取到的 response.text 就是原材料。
 ```pythonfrom bs4 import BeautifulSouphtml_content = response.text # 假设这来自requestssoup = BeautifulSoup(html_content, 'html.parser')```
  • 查找元素(最核心功能)
    * 查找第一个匹配的元素 (find)
    # 查找第一个<h1>标签
    first_heading = soup.find('h1')# 查找ID为 "main-content" 的div标签
    main_div = soup.find('div', id='main-content')# 查找class为 "article-title" 的p标签
    # 注意:因为 'class' 是Python关键字,所以用 'class_'
    article_title = soup.find('p', class_='article-title') 
    
 *   **查找所有匹配的元素 (`find_all`)**这会返回一个列表,包含了所有找到的元素。```python# 查找所有的<a>标签 (链接)all_links = soup.find_all('a')# 遍历所有找到的链接for link in all_links:print(link)```
  • 从找到的元素中提取信息
    当你用 findfind_all 找到一个元素(我们称之为 Tag 对象)后,就可以从中提取你需要的东西。
 ```python# 假设我们已经找到了 article_title 这个元素# <p class="article-title">这是一个标题</p># 1. 获取标签内的文本title_text = article_title.text # 输出: '这是一个标题'# 或者用 .get_text(strip=True) 去除多余空格# 2. 获取标签的属性 (比如链接的URL)# 假设我们找到了一个 a_tag# <a href="/news/123.html" id="link1">新闻链接</a>link_url = a_tag['href']  # 输出: '/news/123.html'link_id = a_tag['id']    # 输出: 'link1'```

总结对比:一张表看懂

特性requestsBeautifulSoup
核心职责获取数据 (发送网络请求)解析数据 (解析HTML字符串)
交互对象远端Web服务器本地的HTML文本
主要输入URL地址response.text (HTML字符串)
主要输出Response 对象Soup 对象,内含 Tag 对象
关键函数requests.get() / post()soup.find() / find_all()
比喻外勤特工 / 信使密码破译专家 / 解剖刀

最终,你的标准工作流永远是:
response = requests.get(url) -> soup = BeautifulSoup(response.text, '...') -> data = soup.find(...)

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

相关文章:

  • 网站广东省备案系统设计之家官网首页
  • 建设银行悦生活网站小程序api接口怎么对接
  • Win11安装 Ubuntu 22.04 子系统 - WSL2 - 安装完迁移到其它盘
  • 锂电池保护芯片的船运模式
  • Foundation 折叠列表
  • 卫浴建材网站建设建站seo推广
  • 青岛网站建设兼职做企业网站有什么工作内容
  • 连云港网站建设优化百度站长平台清退
  • Orleans 流系统握手机制详解
  • 视觉网络网站辽宁鞍山网站建设
  • 最新项目贺州seo
  • 飞手通航内蒙古基地落子锡林郭勒 携手疆空科技激活北疆低空经济
  • 品牌宝免费网站手机网站策划
  • 宣传网站制作泰安哪里可以做网站
  • 简述网站建设的一般流程源码网站违法吗
  • 厦门唯一官方网站vps网站能打开
  • 怎么投诉没有备案就已经运营网站wordpress 企业 自适应
  • 网站设计与管理开发电商网站多少钱
  • 网站域名后缀有哪些个人小公司怎么注册
  • 第三章 常用协议
  • 网站备案管谁要幕布新乡新手学做网站
  • ‌《项目整体管理与范围管理核心知识点总结》
  • 机器人模拟器(python)
  • 内蒙古有做购物网站的吗有比wordpress更好的吗
  • 宜城网站开发宠物公司网页设计
  • 支付宝接入电商平台详解
  • qt6的utf8到gbk编码转换
  • 从零构建RAG知识库管理系统(二)
  • 网站建设mfdos福建省建设继续教育网站
  • 社联网站建设的目的装潢公司网站模板