【精品示例】超实用Python爬虫入门实例——做一个优质舔狗

2023-11-20

引言

最近发现了一个有意思的网站,里面充斥了大量的舔狗箴言。作为一个爬虫发烧友怎么能错过此等机会,咱们直接就是上才艺!

类的编写

本次爬虫使用了多协程的方案进行,保证了爬虫的速度。在这里我们新建一个爬虫类,并在里边添加上我们需要的方法。

网页的获取

首先是网页的获取部分,我们在这里主要使用了多协程,代码如下:

# 定义多协程函数
 async def page_get(self):
 	# 利用with创建协程会话
     async with aiohttp.ClientSession() as session:
     	# 再次利用循环的会话来进行网页源代码的获取
         async with session.get(url=self.url) as resp:
             html = await resp.text()
             # 调用网页解析的函数
             result = self.page_parse(html)
             # 写入文件
             with open('tiangou.txt', mode='a+', encoding='utf-8') as f:
                 if result + '\n' not in f.readlines():
                     f.write(result + '\n')

网页解析部分

在本函数中我们调用了BeautifulSoup解析网站的内容,然后返回页面的内容,代码如下:

    def page_parse(self, html):
        soup = BeautifulSoup(html, 'html.parser')
        result = soup.find('article')
        return result.text

类的主方法

在类的主方法中我们创建了协程循环,并提交任务给协程。与此同时,我们还能够根据类的属性来决定获取多少句子。

    def run(self):
        try:
            loop = asyncio.get_event_loop()
            tasks = [self.page_get() for i in range(self.num)]
            loop.run_until_complete(asyncio.wait(tasks))
        except Exception as e:
            print(e)

全部代码与运行演示

基于上述内容,全部代码如下所示:

import asyncio
from bs4 import BeautifulSoup
import aiohttp
from random import choice

HEADERS = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 '
                  'Safari/537.36 '
}
URL = 'https://www.nihaowua.com/dog.html'

class crawl_dog():
    def __init__(self, url, headers, num=100):
        self.url = url
        self.headers = headers
        self.num = num

    async def page_get(self):
        async with aiohttp.ClientSession() as session:
            async with session.get(url=self.url) as resp:
                html = await resp.text()
                result = self.page_parse(html)
                with open('tiangou.txt', mode='a+', encoding='utf-8') as f:
                    if result + '\n' not in f.readlines():
                        f.write(result + '\n')

    def page_parse(self, html):
        soup = BeautifulSoup(html, 'html.parser')
        result = soup.find('article')
        return result.text

    def run(self):
        try:
            loop = asyncio.get_event_loop()
            tasks = [self.page_get() for i in range(self.num)]
            loop.run_until_complete(asyncio.wait(tasks))
        except Exception as e:
            print(e)


if __name__ == '__main__':
    # crawl = crawl_dog(URL, HEADERS)
    # crawl.run()
    with open('tiangou.txt', mode='r', encoding='utf-8') as f:
        result = f.readlines()
    print(choice(result))

在主函数中,新建了类并调用了run方法来进行抓取。我们随机抽几句来尝尝鲜:

  • 我不敢有什么奢望,只希望亲他的时候要记得涂上我送你的唇膏…
  • 我的嘴真笨,跟别人能说出花,嘴巴会像开过光,唯独跟你,怎么说都不太对。每天都要看很多遍微博,你稳居我微博经常访问第一的宝座,有什么好玩的都想分享给你只为逗你一笑。你的抑郁你的不快我都看在眼里急在心头,我想默默陪着你让你开心。天快亮了,又一包烟抽完。你是我最孤独的心事,能不能偶尔低下头看看我。
  • 问你在干嘛,你问我能不能别烦你。居然询问我的意见,态度真好,真喜欢你!

妈妈再也不同担心我没有舔狗语录喽!

总结

在本文中,设计并实现了抓取舔狗句子的小实例。如果你有任何问题可以私信或或者评论与我讨论。

我们下次再见!

`

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【精品示例】超实用Python爬虫入门实例——做一个优质舔狗 的相关文章

随机推荐

  • gRPC C++开发环境搭建

    特别需要强调 grpc需要6 3以上的gcc g 版本 如果低于此版本的需要参考文档进行升级 cmake gcc的版本 ubuntu16 04默认的版本不支持 1 安装必要的依赖工具 安装必要的依赖工具 sudo apt get insta
  • OneNote 深度评测:使用资源、插件、模版

    评测 OneNote 是生产力办公套件 Office 微软所提供 大厂背景 不用担心微软跑路 免费 主要是指使用免费 由于 OneNote 默认是存储至 OneDrive 之上 如果你要存一些比较大的文件 那边需要你付费购买 OneDriv
  • JVM的类加载机制

    1 概述 JVM是Java语言实现跨平台的关键 Java语言的运行过程 java通过编译器编译为 class 通用字节码文件并不能直接被操作系统所识别 针对不同的操作系统可安装对应的JVM JVM将字节码解释为当前平台所能识别的机器码实现
  • Failed to bind properties under ‘spring.datasource.type‘ to java.lang.Class<javax.sql.DataSource>

    Description Failed to bind properties under spring datasource type to java lang Class
  • 准备三个月,终拿快手offer!薪资28k*16

    昨天有VIP小伙伴给小孟说 拿到了快手的offer 聊了半个小时 待遇还不错 准备去了 28k 16薪 快手的k3c职级可对标阿里的P7 前面我说过 能去大厂就去大厂 有机会就去争取 年纪轻轻的 多努力就完事了 找工作运气占很大的成分 甚至
  • 关于Robomaster机甲大师比赛的Yaw轴电机齿轮比不为1:1的解决方法

    Yaw轴电机齿轮比不为1 1的解决方法 问题 解决办法 弊端 问题 在Robomaster比赛中我们的英雄机器人的机械结构没做好 整体做得稍微有点大 云台也是很有质量 于是采用了6020电机带动齿轮1 1 5转动 但这样带来的结果就是有时候
  • 大数据技术之Zookeeper

    大数据技术之Zookeeper 一 zookeeper特点 二 zookeeper单机模式 三 zookeeper 常用命令 四 查看zookeeper 状态的几种方式 一 zookeeper特点 Zookeeper 文件系统 通知机制 1
  • 从零玩转人脸识别之RGB人脸活体检测

    从零玩转RGB人脸活体检测 前言 作者个人博客 点击前往 本期教程人脸识别第三方平台为虹软科技 本文章讲解的是人脸识别RGB活体追踪技术 免费的功能很多可以自行搭配 希望在你看完本章课程有所收获 ArcFace 离线SDK 包含人脸检测 性
  • short定义的两个数相加最后越界问题

    Java 程序语言提供了一些可以作用在整数值上的操作数 比较运算子 得到 boolean 型别的值 数值比较运算子 lt gt gt 和 gt 15 20 1 数值相等运算子 和 15 21 1 数值运算子 得到 int 或 long 型别
  • java pakage、import关键字

    package介绍 常用的包 import 案例
  • C语言结构体初始化的四种方法

    定义 struct InitMember int first double second char third float four 方法一 定义时赋值 struct InitMember test 10 3 141590 method o
  • 静态功耗具体指什么

    之前我的理解一直为静态功耗等同于关机功耗 今天专门搜索了解了下 百度百科给出的定义是指漏电流功耗 是电路状态稳定时的功耗 其数量级很小 其实这个定义很模糊 怎样的状态是电路稳定状态 我自己的理解是静态功耗为两种 一 等同于关机功耗 即器件全
  • ssh连接很慢GSS failure解决办法

    什么导致了 scp 和 ssh 的登陆提示速度下降 就我自身所遇到的情况来看 这些延迟绝大部分是 GSSAPI 的认证功能导致的 你可以用 v 选项确认你的情况 例如 下面是 ssh 的详细登陆过程 cherry cherry ssh v
  • 原生JS实现随着鼠标滚动到元素位置触发对应css3动画,简单易用

    废话不多说 直接上代码 附用法 纯博主手写 看完后 觉得好左上角请点个赞 觉得不好的请留下您的建议 谢谢 此代码改版很方便 大家可以任意发挥 注意 如果不想自己写动画的 可以引入Animate css 相信这个动画库大家都不陌生 body
  • modbus协议crc校验c语言代码,modbus协议crc校验

    数据校验是数据传输必不可少的一部分 主要目的就是防止数据传输过程中出现差错 本文主要根据原理实现它的核心代码 预置1个16位的寄存器为十六进制FFFF 全1 此寄存器为CRC寄存器 把第一个8位二进制数据 即通讯信息帧的第一个字节 与16位
  • MySQL 常用高可用方案

    这一节内容来简单聊聊 MySQL 最常用的几种高可用方案 1 主从或主主 Keepalived 主从或主主 Keepalived 算是历史比较悠久的 MySQL 高可用方案 常见架构如下 其大致原理是 在主实例的 Keepalived 中
  • AIGC之Stable Diffusion 提示词学徒库

    前言 描述 本文主要用来记录 提示词TAG 一 提示词 1 提升画面品质的提示词 masterpiece 杰作 best quality 最佳品质 ultra highers 超高分辨率 8k resolution 8k分辨率 realis
  • C++基础问题

    1 在 main 函数执行之前和之后的代码可能是什么 main 函数执行之前 初始化系统相关资源 设置栈指针 初始化 static 变量和 global 变量 未初始化的全局变量赋初值 全局对象初始化 这里会调用构造函数 这是可能会调用的代
  • 为什么越来越多的 IT 人考软考?

    近几年随着国家计算机与软件技术的发展 每年报名参加软考考试的人也越来越多 据工信部新闻发布会消息 计算机软件与通信专业技术人员职业资格考试累计报考人数超过485万 2022年报考人数129万人 01 为什么越来越多的IT人考软考证书 1 软
  • 【精品示例】超实用Python爬虫入门实例——做一个优质舔狗

    引言 最近发现了一个有意思的网站 里面充斥了大量的舔狗箴言 作为一个爬虫发烧友怎么能错过此等机会 咱们直接就是上才艺 类的编写 本次爬虫使用了多协程的方案进行 保证了爬虫的速度 在这里我们新建一个爬虫类 并在里边添加上我们需要的方法 网页的