使用Python3编写抓取网页和只抓网页图片的脚本

下面是使用Python3编写抓取网页和只抓网页图片的脚本的完整攻略:

抓取网页的脚本

前置知识

在开始编写抓取网页的脚本之前,需要先了解一下Python中的以下库:

  1. requests:用于发送HTTP请求,即访问网页。
  2. beautifulsoup4:用于解析HTML代码,即从网页中提取所需的内容。

编写步骤

  1. 导入requests和beautifulsoup4库。
import requests
from bs4 import BeautifulSoup
  1. 确定要访问的网页链接。
url = "https://www.example.com"
  1. 发送HTTP请求,获取网页的HTML代码。
response = requests.get(url)
html = response.text
  1. 用beautifulsoup4解析HTML代码,提取所需的内容。
soup = BeautifulSoup(html, "html.parser")
title = soup.title.string
  1. 打印所需的内容。
print(title)

示例说明

以抓取百度首页上的标题为例。

import requests
from bs4 import BeautifulSoup

url = "https://www.baidu.com"
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, "html.parser")
title = soup.title.string

print(title)

运行结果:

百度一下,你就知道

只抓网页图片的脚本

前置知识

在开始编写只抓网页图片的脚本之前,需要先了解一下Python中的以下库:

  1. requests:用于发送HTTP请求。
  2. os:用于创建保存图片的文件夹。
  3. BeautifulSoup:用于解析HTML代码。
  4. re:用于正则表达式匹配。

编写步骤

  1. 导入需要用到的库。
import requests
import os
from bs4 import BeautifulSoup
import re
  1. 确定要访问的网页链接。
url = "https://www.example.com"
  1. 发送HTTP请求,获取网页的HTML代码。
response = requests.get(url)
html = response.text
  1. 用beautifulsoup4解析HTML代码,找到所有的图片链接。
soup = BeautifulSoup(html, "html.parser")
img_tags = soup.find_all("img")
  1. 创建保存图片的文件夹。
if not os.path.exists("images"):
    os.mkdir("images")
  1. 遍历所有的图片链接,下载并保存图片。
for img in img_tags:
    src = img.get("src")
    if src is None:
        continue
    if re.match(r"^http(s)?://", src):
        img_url = src
    else:
        img_url = url + src
    img_name = img_url.split("/")[-1]
    try:
        img_data = requests.get(img_url, timeout=5).content
    except:
        continue
    with open("images/" + img_name, "wb") as fp:
        fp.write(img_data)

示例说明

以抓取百度图片搜索结果页的图片为例。

import requests
import os
from bs4 import BeautifulSoup
import re

url = "https://image.baidu.com/search/index?tn=baiduimage&word=cat"
response = requests.get(url)
html = response.text

soup = BeautifulSoup(html, "html.parser")
img_tags = soup.find_all("img")

if not os.path.exists("images"):
    os.mkdir("images")

for img in img_tags:
    src = img.get("src")
    if src is None:
        continue
    if re.match(r"^http(s)?://", src):
        img_url = src
    else:
        img_url = "https:" + src
    img_name = img_url.split("/")[-1]
    try:
        img_data = requests.get(img_url, timeout=5).content
    except:
        continue
    with open("images/" + img_name, "wb") as fp:
        fp.write(img_data)

运行结果:

该脚本将抓取百度图片搜索“猫”这个关键字的结果,并将所有图片保存在images文件夹中。

注意事项

需要注意的是,在抓取网页和只抓取网页图片的脚本中,都需要注意HTTP请求的响应代码,以判断请求是否成功。同时,在下载图片时要注意异常处理,防止程序崩溃。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python3编写抓取网页和只抓网页图片的脚本 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python练习之循环控制语句 break 与 continue

    Python练习之循环控制语句 break 与 continue 在Python中,循环控制语句break与continue可以帮助我们进行循环语句的控制,从而实现更加高效的编程。 break语句 break语句可以用于循环语句中,用于结束整个循环。 示例: numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for numb…

    python 2023年6月3日
    00
  • Python中的元组介绍

    接下来我将为你讲解Python中的元组介绍完整攻略。 元组的基本概念 元组(Tuple)是Python语言中一种不可变的序列,类似于列表(List),但是元组中的元素不能被修改。元组中的元素可以是不同的数据类型,例如整数、浮点数、字符串、列表等。元组使用小括号()来表示,其中的元素用逗号分隔。元组的索引方式与列表一样,从0开始。 以下是一个示例元组: fru…

    python 2023年5月14日
    00
  • python中多层嵌套列表的拆分方法

    Python中多层嵌套列表的拆分方法 在Python中,我们可以使用循环和递归的方法来拆分多层嵌套列表。本攻略将详细介绍如何拆分多层嵌套列表。 使用循环拆分多层嵌套列表 以下是一个示例代码,演示如何使用循环拆分多层嵌套列表: # 使用循环拆分多层嵌套列表 nested_list = [1, [2, [3, 4], 5], 6, [7, 8]] flat_li…

    python 2023年5月13日
    00
  • Python中文分词库jieba(结巴分词)详细使用介绍

    Python中文分词库jieba(结巴分词)详细使用介绍 Python中文分词库jieba是一个高效的、支持多种分词模式的中文分词工具。它支持三种分词模式:精确模式、全模式和搜索引擎模式,具有分词精度高、速度快和易于使用等特点。本文将详细介绍jieba的使用方法。 安装 安装jieba非常简单,使用pip命令即可: pip install jieba 基本用…

    python 2023年5月13日
    00
  • 对Python random模块打乱数组顺序的实例讲解

    下面是对Python random模块打乱数组顺序的实例讲解的完整攻略。 概述 在Python中,我们可以通过random模块的shuffle()函数来打乱一个数组的顺序。该函数可以将一个序列(比如一个列表)中的元素随机排列。 函数语法 shuffle() 函数语法如下: import random # 导入 random 模块 random.shuffle…

    python 2023年6月3日
    00
  • Python做简单的字符串匹配详解

    以下是详细讲解“Python做简单的字符串匹配详解”的完整攻略。 Python做简单的字符串匹配 在Python中,我们可以使用re模块进行字符串匹配。re模块提供了一系函数,用于处理正则表达式。下面是一个简单的字符串匹配例: import re text = "Hello World" pattern = "Hello&quo…

    python 2023年5月14日
    00
  • C++调用python(执行py文件)的全过程

    C++调用Python脚本文件的过程中,需要使用Python的外部库Python.h。在执行Python脚本文件前,需要先建立Python的运行环境,即调用Py_Initialize()函数进行初始化,完成后即可使用Python的相关功能了。 下面详细讲解在C++中调用Python脚本的全过程: 引用Python库以及头文件 在C++中引用Python库和头…

    python 2023年5月13日
    00
  • 如何使用 Python Redis 库的 Pub/Sub 功能?

    如何使用 Python Redis库的Pub/Sub功能? Redis是一种高性能的键值存储数据库,支持多种数据结构和功能。其中,Pub/Sub功能是Redis的一个重要特性,可以用于实现消息传递和事件通知等功能。在本文中,我们将介绍如何使用Python Redis库的Pub/Sub功能的完整使用攻略,包括创建发布者和订阅者、发布和订阅消息等操作。 步骤1:…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部