爬取元气手机壁纸简单案例(仅用于教学,禁止任何非法获利)

embedded/2024/10/4 17:19:16/

爬虫常用的库

爬虫(Web Scraping)是一种从网页上提取数据的技术。在 Python 中,有许多库可以帮助实现这一目标。以下是一些常用的爬虫库,以及对 BeautifulSoup 的详细介绍。
常用爬虫库

1.Requests

​ a.功能:用于发送 HTTP 请求,获取网页内容。
​ b.特点:简单易用,支持 GET 和 POST 请求,能够处理 cookies、会话等。

2.BeautifulSoup

​ a.功能:用于解析 HTML 和 XML 文档,提取数据。
​ b.特点:提供简单的 API 来导航、搜索和修改解析树,非常适合处理复杂的网页结构。

3.Scrapy

​ a.功能:一个强大的爬虫框架,适合构建大规模爬虫项目。
​ b.特点:支持异步请求,内置了数据存储和提取功能,适合需要高效爬取的场景。

4.Selenium

​ a.功能:用于自动化浏览器操作,可以抓取动态内容。
​ b.特点:可以模拟用户操作,适合处理 JavaScript 渲染的页面。

5.lxml

​ a.功能:用于解析和处理 XML 和 HTML 文档。
​ b.特点:速度快,支持 XPath 查询。

6.Pandas

​ a.功能:用于数据处理和分析。
​ b.特点:可以方便地将抓取到的数据进行清洗和分析。

BeautifulSoup 详细介绍

BeautifulSoup 是一个用于解析 HTML 和 XML 的 Python 库,提供了方便的工具来提取和处理网页数据。以下是对 BeautifulSoup 的一些关键点的介绍:
安装
使用 pip 安装 BeautifulSoup:

python">pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple 

安装 requests

python">pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple 

基本用法

  • 导入库:
python">   from bs4 import BeautifulSoupimport requests
  • 获取网页内容:
   url = 'https://example.com'response = requests.get(url)html_content = response.text
  • 创建 BeautifulSoup 对象:
python">   soup = BeautifulSoup(html_content, 'html.parser')

解析 HTML:

  • 查找标签:
python">title = soup.title
print(title.text)  # 打印网页标题
  • 查找特定标签:
python"> for heading in headings:print(heading.text)headings = soup.find_all('h1')  # 找到所有 h1 标签
  • 使用 CSS 选择器:
python"> links = soup.select('a[href]')  # 查找所有有 href 属性的链接for link in links:print(link['href'])

修改文档:

  • 添加、删除标签:
python">new_tag = soup.new_tag('p')
new_tag.string = '这是新添加的段落'
soup.body.append(new_tag)  # 将新标签添加到 body 中

BeautifulSoup优点

  • 易于使用:简单的 API 使得即使是初学者也能快速上手。
  • 灵活性:支持多种解析器(如 lxml 和 html.parser)。
  • 强大的搜索功能:通过标签名、属性和文本内容进行精确查找。

示例代码
以下是一个简单的示例,演示如何使用 BeautifulSoup 提取网页中的所有链接:

python">import requests
from bs4 import BeautifulSoup# 获取网页内容
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')# 查找所有链接
for link in soup.find_all('a'):print(link.get('href'))

总结
BeautifulSoup 是一个功能强大的网页解析库,适合用于快速提取 HTML 数据。结合其他库(如 Requests 和 Scrapy),可以构建强大的爬虫应用。通过灵活使用其各种功能,用户可以高效地抓取和处理网页数据。

简单案例演示爬取元气手机壁纸

获取网页请求信息

  • 设置headers请求头过程如下图:

在这里插入图片描述

  • 查看请求响应的网页html代码
python">import  requests
# 定制请求头
headers = {'user-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'}
response = requests.get('https://mbizhi.cheetahfun.com/sj/j/', headers=headers)
print('text:')
print(response.text)
print("content:")
print(response.content)
  • 出现下面的结果表示请求成功

在这里插入图片描述

完整代码如下:

import requests
from bs4 import BeautifulSoup
import os
# 定制请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'
}# 发送请求获取网页内容
url = 'https://mbizhi.cheetahfun.com/sj/j/'
response = requests.get(url, headers=headers)# 检查响应状态码
if response.status_code == 200:# 使用 BeautifulSoup 解析网页内容soup = BeautifulSoup(response.text, 'html.parser')# 查找所有图片元素images = soup.find_all('img')# 创建保存图片的目录save_dir = 'downloaded_images'if not os.path.exists(save_dir):os.makedirs(save_dir)# 遍历图片元素,下载并保存图片for i, image in enumerate(images):img_url = image['src']# 确保URL是绝对路径if not img_url.startswith(('http:', 'https:')):img_url = url + img_url  # 将相对路径转换为绝对路径img_data = requests.get(img_url).content  # 下载图片内容# 构建保存路径file_path = os.path.join(save_dir, f'image_{i}.jpg')# 保存图片with open(file_path, 'wb') as file:file.write(img_data)print(f'Image {i} saved to {file_path}')
else:print('Failed to retrieve the webpage')

运行后:打开downloaded_images文件夹查看,获取的图片如下:

在这里插入图片描述


http://www.ppmy.cn/embedded/121297.html

相关文章

简单的微信小程序个人 个人详情页

一、示例 1.个人页面 2.个人详情页面 二、示例代码 1.wxml页面 <!--pages/user/user.wxml--> <view class"mine-wrapper"><view class"avatar-wrapper"><view><view class"avatar"><image style"borde…

.scl文件导入

.SCL的文件怎么导入博图-SIMATICS7-1200系列-找答案-西门子中国 从源生成块

解决nginx+tomcat宕机完美解决方案

问题描述&#xff1a;公司项目太老了&#xff0c;还是tomcat项目&#xff0c;部署两台tomcat,做了nginx负载。最近发现每到上午10&#xff0c;下午3点&#xff0c;tomcat就宕机了&#xff0c;死活找不到原因&#xff0c;客户影响超期差&#xff0c;实在让人头疼。 解决思路&am…

C++ 游戏开发:奠定高性能游戏的基础

C 被广泛认为是游戏开发的首选语言之一。其独特的性能优势、底层驱动能力和丰富的库支持&#xff0c;推动了众多经典游戏和游戏引擎的产生。本文将深入探讨C在游戏开发中的应用以及相关技术要点。更多内容&#xff0c;请查阅 为什么选择C进行游戏开发 高性能&#xff1a;C 是一…

【TypeScript】异步编程

文章目录 异步编程1. TypeScript 中的异步编程1.1 基本用法简单的异步函数异步操作与延迟并行执行多个异步操作处理错误使用 Promise.all 处理多个异步操作的错误 2. 在 TypeScript 中使用 Vite 和 FastAPI2.1 安装 Node.js2.2 创建 Vue 3 TypeScript 项目2.3 安装依赖2.4 启动…

【尚硅谷】RocketMQ 消息队列学习笔记

RocketMQ 和 Kafka 消息队列概念比较&#xff1f; 好的&#xff01;RocketMQ 和 Kafka 都是分布式消息队列系统&#xff0c;它们的核心概念有很多相似之处&#xff0c;但在具体实现和命名上有所不同。下面我通过一个表格来对比 RocketMQ 和 Kafka 中的五个概念&#xff1a;消息…

【rCore OS 开源操作系统】Rust mod模块和static生命周期 知识点及练习题

【rCore OS 开源操作系统】Rust 模块 mod 知识点及练习题 前言 虽然是模块的章节&#xff0c;但是也涉及到了一些结构体访问控制、生命周期 相关的知识点。 这里暂不讨论 crate&#xff0c;个人觉得这个东西属于工程化的内容&#xff0c;而不是 rust 的模块语法。 知识点 mo…

激光切割机适用材质有哪些

激光切割机是一种利用激光束对各种材料进行高精度、高速度切割的机器设备。其适用材质广泛&#xff0c;包括但不限于以下两大类&#xff1a; 一、金属材料 不锈钢&#xff1a;激光切割机较容易切割不锈钢薄板&#xff0c;使用高功率YAG激光切割系统&#xff0c;切割不锈钢板的…