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日

相关文章

  • Django笔记二十七之数据库函数之文本函数

    本文首发于公众号:Hunter后端原文链接:Django笔记二十七之数据库函数之文本函数 这篇笔记将介绍如何使用数据库函数里的文本函数。 顾名思义,文本函数,就是针对文本字段进行操作的函数,如下是目录汇总: Concat() —— 合并 Left() —— 从左边开始截取 Length() —— 获取字符串长度 Lower() —— 小写处理 LPad() …

    python 2023年4月22日
    00
  • python做反被爬保护的方法

    针对如何让Python反爬虫,我们可以列举以下几种方法。 1. 设置请求头 Headers 请求头中的User-Agent给出了客户端的相关信息,网站可以根据User-Agent判断请求来自哪里。默认情况下,Python的requests库并不会发送类似于浏览器的请求头信息,这会被很多网站认为是爬虫程序而被拒绝请求。因此在编写Python爬虫时需要添加请求头…

    python 2023年5月14日
    00
  • 使用python实现正则匹配检索远端FTP目录下的文件

    下面是详细的攻略: 使用Python实现正则匹配检索远端FTP目录下的文件 在Python中,我们可以使用ftplib库来连接FTP服务器,并使用正则表达式来匹配文件名。下面是一个示例,演示如何使用Python实现正则匹配检索远端FTP目录下的文件: import re from ftplib import FTP def search_files(ftp,…

    python 2023年5月14日
    00
  • python发送邮件接收邮件示例分享

    Python发送邮件接收邮件完整攻略 一、发送邮件 1. 导入模块 首先,在代码中导入所需的模块:smtplib、email.mime.multipart、email.mime.text、email.mime.image。其中,smtplib模块提供SMTP邮件发送功能,email.mime.multipart、email.mime.text及email.m…

    python 2023年5月20日
    00
  • Python自动化之批量生成含指定数据的word文档

    下面是Python自动化之批量生成含指定数据的word文档的完整攻略。 目录 准备工作 安装所需库 创建word文档模板 读取并替换指定数据 批量生成含指定数据的word文档 示例说明 总结 准备工作 在进行自动化生成含指定数据的word文档前,需要准备工作如下: 确定生成的文档的结构、样式和格式,以便后续创建文档模板时使用。 确定要替换的指定数据,并将这些…

    python 2023年5月18日
    00
  • Python小程序编程实现一键自动整理文件解压文件

    Python小程序编写完整攻略 一、实现目标 开发一款小程序,用于自动识别指定文件夹中的压缩文件,并将其解压、整理到指定的目录中。 二、编写步骤 导入需要的Python库:os、shutil、zipfile等 定义函数,用于检测并解压压缩文件 定义函数,用于整理文件,并将其移动到指定目录 完成主程序的编写 三、具体实现过程 导入需要的Python库 impo…

    python 2023年5月23日
    00
  • 浅谈python抛出异常、自定义异常, 传递异常

    浅谈Python抛出异常、自定义异常和传递异常 异常处理是编程中必不可少的部分,能够提高程序的健壮性和可读性。Python中的异常处理机制提供了非常方便和灵活的方法。 Python中抛出异常 抛出异常可以在代码运行过程中发现错误,主动终止程序的运行。 Python中内置了许多异常类型,比如 IndexError、KeyError 等等,还有 Exceptio…

    python 2023年5月13日
    00
  • 对python添加模块路径的三种方法总结

    当我们在编写 python 代码的时候,有时候需要引用一些在项目外的模块。这时候,我们就需要指定这些模块的路径才可以正常引用。在 python 中有多种方法可以添加模块所在路径,本文将对这三种方法进行总结和详细讲解。 方法一:使用 sys.path.append(PATH) 我们可以使用 sys.path.append(PATH) 来添加模块所在路径。其中 …

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