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

news2024/11/17 6:46:27

爬虫常用的库

爬虫(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:

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

安装 requests

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

基本用法

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

解析 HTML:

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

修改文档:

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

BeautifulSoup优点

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

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

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代码
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.coloradmin.cn/o/2173622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用 Llama-3.1-Nemotron-51B 推进精度-效率前沿的发展

今天,英伟达™(NVIDIA)发布了一款独特的语言模型,该模型具有无与伦比的准确性和效率性能。Llama 3.1-Nemotron-51B 源自 Meta 的 Llama-3.1-70B,它采用了一种新颖的神经架构搜索(NAS)方法&#…

MySQL的安装(环境为CentOS云服务器)

卸载内置环境 我们初期使用root账号,后期再切换成普通账号 使用 ps axj | grep mysql 查看系统中是否有MySQL相关的进程 使用 systemctl stop mysqld 关停进程 使用 rpm -qa | grep mysql 查看MySQL相关的安装包 使用 rpm -qa | grep mysql | xargs yum -y remo…

试用Debian12.7和Ubuntu24.4小札

Debian GNU/Linux 12 (bookworm)和Ubuntu 24.04.1 LTS是现阶段(2024年9月26日)两个发行版的最新版本。Ubuntu Server版本默认就不带桌面(ubuntu-24.04-live-server-amd64.iso),这个默认就是最小化安装(安装…

长芯微LPQ76930锂电池组保护芯片完全P2P替代BQ76930

LPQ76930系列芯片可作为 3-15 节串联电池组监控和保护解决方案的一部分。通过 TWI 通信,MCU 可以使用 LPQ76930 来执行电池管理功能1,例如监测(电池电压、电池 组电流、电池组温度)、保护(控制充电/放电 FET&#xff0…

java中的强软弱虚

在java中对象的引用有强、软、弱、虚四种,这些引用级别的区别主要体现在对象的生命周期、回收时机的不同。 文章目录 准备工作1. 设置内存2. 内存检测 强引用软引用弱引用虚引用 准备工作 1. 设置内存 为方便调试,将内存设置为16MB 依次点击菜单栏的R…

springboot基于学习行为的学生选课成绩分析系统设计与实现

目录 功能介绍使用说明系统实现截图开发核心技术介绍:开发步骤编译运行核心代码部分展示开发环境需求分析详细视频演示源码获取 功能介绍 学生 课程学习行为数据录入: 学生填写每门课程的学习时长、学习态度、课后作业质量等。 课程学习行为数据修改: 学生可修改已…

基于SpringBoot+Vue的大学生公考服务平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

php 平滑重启 kill -SIGUSR2 <PID> pgrep命令查看进程号

有时候我们使用nginx 大家都知道平滑重启命令: /web/nginx/sbin/nginx -s reload 但大家对php-fpm 重启 可能就是简单暴力的kill 直接搞起了 下面介绍一个sh 文件名保存为start_php.sh 来对php-fpm 进行平滑重启 #!/bin/bash# 检查 PHP-FPM 是否运行 if ! pgrep php-…

JAVA开源项目 技术交流分享平台 计算机毕业设计

本文项目编号 T 053 ,文末自助获取源码 \color{red}{T053,文末自助获取源码} T053,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

论文阅读(十一):CBAM: Convolutional Block Attention Module

文章目录 1.Introduction2.Convolutional Block Attention ModuleExperimentsConclusion 论文题目:CBAM: Convolutional Block Attention Module(CBAM:卷积注意力机制)   论文链接:点击跳转   代码链接&#xff1a…

运维,36岁,正在经历中年危机,零基础入门到精通,收藏这一篇就够了

我今年36岁,运维经理,985硕士毕业,目前正在经历中年危机,真的很焦虑,对未来充满担忧。不知道这样的日子还会持续多久,突然很想把这些年的经历记录下来,那就从今天开始吧。 先说一下我的中年危机…

中国科学技术大学《2020年+2021年845自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《25届中国科学技术大学845自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2020年真题 2021年真题 Part1:2020年2021年完整版真题 2020年真…

python实战三:使用循环while模拟用户登录

# (1)初始变量 i0 while i<3: # (2)条件判断# (3)语句块user_name input(请输入您的用户名&#xff1a;)pwd input(请输入您的密码&#xff1a;)#登陆判断 if elseif user_namewwl and pwd66666666:print(系统正在登录&#xff0c;请稍后)#需要改变循环变量&#xff0c;目…

一文读懂:监督式微调(SFT)

监督式微调 (Supervised fine-tuning)&#xff0c;也就是SFT&#xff0c;就是拿一个已经学了不少东西的大型语言模型&#xff0c;然后用一些特定的、已经标记好的数据来教它怎么更好地完成某个特定的任务。就好比你已经学会了做饭&#xff0c;但是要特别学会怎么做川菜&#xf…

以流量裂变为目标,驱动动销新潮流

在当今数字化商业世界&#xff0c;流量成为关键。而以流量裂变为目标的动销策略&#xff0c;正成为企业致胜法宝。 流量裂变&#xff0c;即让流量呈指数级增长。它依靠用户传播分享&#xff0c;能快速扩大品牌曝光度与影响力&#xff0c;提高获客效率。动销则是推动产品销售&am…

【幂简集成】手机归属地查询API,精准获取号码所在地,提升数据准确率

在互联网与移动通信技术迅猛进步的背景下&#xff0c;手机号码已成为企业经营及个人生活中的重要工具。对众多企业而言&#xff0c;通过手机号归属地查询&#xff0c;既可优化营销策略&#xff0c;又能提高客户服务精确性。手机号归属地查询 API 的问世&#xff0c;旨在满足这一…

AI产品经理学习路径:从零基础到精通,从此篇开始!

一、AI产品经理和和通用型产品经理的异同&#xff1a; 市面上不同的公司对产品经理的定位有很大的差别&#xff0c;一名合格的产品经理是能对软件产品整个生命周期负责的人。 思考框架相同&#xff1a; AI产品经理和通用型软件产品经理的底层思考框架是一样的&#xff0c;都是…

旺店通ERP集成金蝶K3(旺店通主供应链)

源系统成集云目标系统 金蝶K3介绍 金蝶K3是一款ERP软件&#xff0c;它集成了供应链管理、财务管理、人力资源管理、客户关系管理、办公自动化、商业分析、移动商务、集成接口及行业插件等业务管理组件。以成本管理为目标&#xff0c;计划与流程控制为主线&#xff0c;通过对成…

protobuff中的required有什么用?

大家在proto2 应该经常看到如下msg表达: message MsgType3 { required int32 value1 1; required int32 value2 2; } 在protobuff中的required 有什么作用&#xff1f;在 Protocol Buffers&#xff08;protobuf&#xff09;中&#xff0c;required 关键字用于指定某个字段是…

Pygame中Sprite实现逃亡游戏5

在《Pygame中Sprite实现逃亡游戏4》中通过碰撞检测实现了玩家、飞龙与飞火之间的碰撞处理&#xff0c;基本上实现了逃亡功能。最后&#xff0c;实现这个逃亡游戏中文字提示的功能。 1 操作提示 当进入游戏后&#xff0c;会在玩家下方的位置给出操作提示&#xff0c;如图1所示…