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

爬虫常用的库

爬虫(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文件夹查看,获取的图片如下:

在这里插入图片描述

上一篇:【计算机网络最全知识点问答】第二章 物理层


下一篇:python习题1