python requests抓取one推送文字和图片代码实例

下面就给你详细讲解一下“Python requests抓取One推送文字和图片代码实例”的完整攻略。

概述

One是一个很有名的英语学习网站,我们可以从One的每日推送中获取到英语学习素材。本文将介绍如何使用Python的requests模块来获取One的每日推送内容中的文字和图片。

实现过程

  1. 分析One推送页面

我们需要首先找到One的每日推送页面,访问网站后可以看到网页地址为:http://wufazhuce.com/。在该页面中,每日推送的信息会存放在如下的标签中:

    <div class="fp-one-cita">
        <div class="fp-one-titulo-pubdate">
            <p class="titulo"></p>
            <<p class="dom">&nbsp;</p>
            <<p class="may"></p>
        </div>
        <div class="fp-one-cita-wrapper">

            <div class="fp-one-cita-day"></div>
            <p class="fp-one-cita-vol"></p>
            <blockquote class="fp-one-cita-contenido">
                <b><a href="http://wufazhuce.com/one/*****" target="_blank">** 每日一句 **</a></b>
                <br>
                ***
                <br><br>
                <a href="http://wufazhuce.com/one/****" target="_blank">--来自「One · 一个」</a>
            </blockquote>
        </div>
    </div>

我们可以将该标签中的文字内容(经过处理后),作为每日推送文字输出;而图片的地址则在该标签之外,通过分析也可以轻松找到其所在的标签:

    <div class="fp-one-imagen">
        <a href="http://wufazhuce.com/one/****" target="_blank">
            <img class="fp-one-imagen-unlazy" src="****" data-src="****" alt="">
        </a>
        <p><strong>ONE · 每日一图 / ***</strong></p>
    </div>

图片的地址位于上述代码的img标签中的data-src属性中。

  1. Python requests模块访问One推送页面

我们可以使用Python的requests模块来访问One每日推送页面,即:

import requests

url = 'http://wufazhuce.com/'
response = requests.get(url)
  1. 解析HTML并获取One推送的文字和图片

我们使用Python的BeautifulSoup4库来解析HTML页面,解析后,使用CSS选择器找到上面所说的文字和图片的标签,进行内容和图片地址的提取。

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, 'html.parser')

# 获取每日推送中的文字
cita_tag = soup.select_one('div.fp-one-cita')
titulo_tag = cita_tag.select_one('p.titulo')
dom_tag = cita_tag.select_one('p.dom')
may_tag = cita_tag.select_one('p.may')
day_tag = cita_tag.select_one('div.fp-one-cita-day')
vol_tag = cita_tag.select_one('p.fp-one-cita-vol')
contenido_tag = cita_tag.select_one('blockquote.fp-one-cita-contenido')
cita = '{} / {} / {}\n\n{}\n\n{}'.format(
    titulo_tag.text, may_tag.text, dom_tag.text, contenido_tag.text,
    day_tag.text + vol_tag.text
)
print(cita)

# 获取每日推送中的图片
img_url = soup.select_one('div.fp-one-imagen img')['data-src']
print(img_url)
  1. 下载图片

最后,在获取到图片的URL后,使用Python下载模块requests下载图片,并保存在本地。

img_response = requests.get(img_url)
with open('one.jpg', 'wb') as f:
    f.write(img_response.content)

示例

以下是一个完整的实例,它将提取One每日推送中的文字和图片,并将图片保存在本地one.jpg文件。

import requests
from bs4 import BeautifulSoup

url = 'http://wufazhuce.com/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.text, 'html.parser')

cita_tag = soup.select_one('div.fp-one-cita')
titulo_tag = cita_tag.select_one('p.titulo')
dom_tag = cita_tag.select_one('p.dom')
may_tag = cita_tag.select_one('p.may')
day_tag = cita_tag.select_one('div.fp-one-cita-day')
vol_tag = cita_tag.select_one('p.fp-one-cita-vol')
contenido_tag = cita_tag.select_one('blockquote.fp-one-cita-contenido')
cita = '{} / {} / {}\n\n{}\n\n{}'.format(
    titulo_tag.text, may_tag.text, dom_tag.text, contenido_tag.text,
    day_tag.text + vol_tag.text
)
print(cita)

img_url = soup.select_one('div.fp-one-imagen img')['data-src']
img_response = requests.get(img_url)
with open('one.jpg', 'wb') as f:
    f.write(img_response.content)

另一种示例,通过传入日期参数来获取特定日期的One每日推送中的文字和图片并下载。

import requests
from bs4 import BeautifulSoup
from datetime import datetime, timedelta

base_url = 'http://wufazhuce.com/one/{}-{}-{}'

def get_one(date):
    url = base_url.format(date.year, date.month, date.day)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
    }
    response = requests.get(url, headers=headers)

    soup = BeautifulSoup(response.text, 'html.parser')

    cita_tag = soup.select_one('div.fp-one-cita')
    titulo_tag = cita_tag.select_one('p.titulo')
    dom_tag = cita_tag.select_one('p.dom')
    may_tag = cita_tag.select_one('p.may')
    day_tag = cita_tag.select_one('div.fp-one-cita-day')
    vol_tag = cita_tag.select_one('p.fp-one-cita-vol')
    contenido_tag = cita_tag.select_one('blockquote.fp-one-cita-contenido')
    cita = '{} / {} / {}\n\n{}\n\n{}'.format(
        titulo_tag.text, may_tag.text, dom_tag.text, contenido_tag.text,
        day_tag.text + vol_tag.text
    )
    print(cita)

    img_url = soup.select_one('div.fp-one-imagen img')['data-src']
    img_response = requests.get(img_url)
    with open('one_{}.jpg'.format(date.strftime('%Y-%m-%d')), 'wb') as f:
        f.write(img_response.content)

date = datetime.now() - timedelta(days=1)  # 获取昨天的One推送信息
get_one(date)

以上就是Python requests抓取One推送文字和图片代码实例的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python requests抓取one推送文字和图片代码实例 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python开发sdk模块的方法

    针对“python开发sdk模块的方法”的问题,以下是完整攻略: 什么是SDK模块? SDK(Software Development Kit)即软件开发工具集,指的是一些开发工具和文档的集合,用于辅助开发者开发应用程序。在Python语言中,SDK模块通常也称为Python包或Python模块。 如何开发Python SDK模块? 下面介绍一些开发Pyth…

    python 2023年6月2日
    00
  • Python+MySQL随机试卷及答案生成程序的示例代码

    下面是Python+MySQL随机试卷及答案生成程序的完整攻略,包含了示例代码和两条示例说明。 Python+MySQL随机试卷及答案生成程序 程序功能 本程序可生成随机试卷及答案。通过输入试卷的问题、选项及答案,程序会将输入的信息存储在MySQL数据库中,并在程序运行时,随机从数据库中选择指定数量的题目生成随机试卷和答案。 实现步骤 1. 数据库设计 本程…

    python 2023年6月3日
    00
  • 简洁的十分钟Python入门教程

    这里是“简洁的十分钟Python入门教程”的详细攻略: Step 1. 下载Python 首先,我们需要到Python官网(https://www.python.org/downloads/)下载并安装Python。根据自己的操作系统,选择对应的安装包。 Step 2. 查看Python版本 安装成功后,我们可以通过以下代码确认Python版本: pytho…

    python 2023年5月14日
    00
  • 详解python变量与数据类型

    下面是详解“详解Python变量与数据类型”的完整攻略。 Python变量 在Python中,变量是给数据起的名字。当我们需要使用数据时,只需要调用变量即可,而不是直接使用数据。Python变量的命名规则是:以字母或下划线开头,只能包含字母、数字和下划线,且变量名必须是大小写敏感的。以下是Python变量的一些使用方法: # 定义变量 x = 5 y = &…

    python 2023年5月13日
    00
  • python获取当前目录路径和上级路径的实例

    获取当前目录路径和上级路径是Python编程中经常用到的操作之一,这里提供两种方式来实现。 获取当前目录路径 获取当前目录路径主要使用os模块中的os.getcwd()方法,可以直接返回当前操作系统指定进程的当前工作目录。代码示例如下: import os # 获取当前目录路径 current_path = os.getcwd() print("当…

    python 2023年6月2日
    00
  • 详解python3实现的web端json通信协议

    当今Web应用的需求越来越复杂,跨平台跨语言通信的需求也越来越高。JSON已经成为一种流行的数据交换格式,它轻量级且易于阅读和编写,能够方便地进行各种语言之间的数据传输。本攻略演示如何在Python3中实现Web端JSON通信协议。 步骤一:环境准备 安装Python3.x 安装Flask框架:pip install Flask 步骤二:实现JSON通信 使…

    python 2023年6月3日
    00
  • Python numpy.find_common_type()函数

    下面是Python numpy.find_common_type()函数的完整攻略。 函数介绍 numpy.find_common_type()函数用于确定多个数组中公共的数据类型。 函数签名如下: numpy.find_common_type(types, reference=None) 参数解释: types:要比较的数据类型序列,可以是列表、元组或nu…

    python-answer 2023年3月25日
    00
  • 使用Python来开发Markdown脚本扩展的实例分享

    当需要对Markdown进行特殊处理时,我们可以使用Python来开发Markdown脚本扩展,这种方式相对于修改Markdown源码的方式来说更加简单易操作,也更加灵活。 下面将介绍如何使用Python来开发Markdown脚本扩展的完整攻略: 1. 安装Python和Markdown 在开始之前,需要确保Python和Markdown已经被安装到了本地开…

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