如何和女生聊天不尬聊_女孩说和我聊天是尬聊

如何和女生聊天不尬聊_女孩说和我聊天是尬聊大家好呀,我是辣条。写这篇文章的灵感来源于之前和朋友的聊天,真的无力吐槽了,想发适合的表情包怼回去却发现收藏的表情包就那几个,就想着是不是可以爬取一些表情包,再也不用尬聊了。先给大家看看我遇到的聊天最尬的场面:斗图吧图片采集抓取目标工具使用重点内容学习项目思路分析整理需求简易源码分享抓取目标网站:斗图吧工具使用开发环境:win10、python3.7开发工具:pycharm、Chrome工具包:requests、etree重点内容学习1.Q队列储存数据信息2.py多线程使用方法

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

大家好呀,我是辣条。

写这篇文章的灵感来源于之前和朋友的聊天,真的无力吐槽了,想发适合的表情包怼回去却发现收藏的表情包就那几个,就想着是不是可以爬取一些表情包,再也不用尬聊了。

先给大家看看我遇到的聊天最尬的场面:

在这里插入图片描述
在这里插入图片描述

抓取目标

网站:斗图吧
在这里插入图片描述

工具使用

开发环境:win10、python3.7
开发工具:pycharm、Chrome
工具包:requests、etree

重点内容学习

1.Q队列储存数据信息
2.py多线程使用方法
3.xpath语法学习

项目思路分析

根据你需要的关键字搜索对应的图片数据
搜索的关键字和页数根据改变对应的url
https://www.doutula.com/search?type=photo&more=1&keyword={}&page={}
将对应的url地址保存在page队列里

    page_q = Queue()
    img_q = Queue()
    for x in range(1, 11):
        url = 'https://www.doutula.com/search?type=photo&more=1&keyword=%E7%A8%8B%E5%BA%8F%E5%91%98&page={}'.format(x)
        page_q.put(url)

在这里插入图片描述
通过xpath方式提取当前页面的url地址以及图片的名字
将提取到的图片和地址存储在img队列里

    def parse_page(self, url):
        response = requests.get(url, headers=self.headers).text
        # print(response)
        html = etree.HTML(response)
        images = html.xpath('//div[@class="random_picture"]')
        for img in images:
            img_url = img.xpath('.//img/@data-original')
            # 获取图片名字
            print(img_url)
            alt = img.xpath('.//p/text()')
            for name, new_url in zip(alt, img_url):
                filename = re.sub(r'[??.,。!!*\\/|]', '', name) + ".jpg"
                # 获取图片的后缀名
                # suffix = os.path.splitext(img_url)[1]
                # print(alt)
                self.img_queue.put((new_url, filename))

在这里插入图片描述
根据图片地址下载保存图片
保存图片是要根据图片url来判断保存的后缀(我统一保存的jpg,问就是因为懒癌晚期)

整理需求

  • 创建两个线程类,一个用来提取网页图片数据,一个保存图片数据
  • 创建两个队列,一个保存page的url, 一个保存图片的url和名字
  • 通过xpath的方法提取出网址的图片地址

简易源码分享

import requests
from lxml import etree
import re
from queue import Queue
import threading


class ImageParse(threading.Thread):
    def __init__(self, page_queue, img_queue):
        super(ImageParse, self).__init__()  
        self.page_queue = page_queue
        self.img_queue = img_queue
        self.headers = { 
   
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
    }

    def run(self):
        if self.page_queue.empty():
            break
        url = self.page_queue.get()
        self.parse_page(url)

    def parse_page(self, url):
        response = requests.get(url, headers=self.headers).text
        # print(response)
        html = etree.HTML(response)
        images = html.xpath('//div[@class="random_picture"]')
        for img in images:
            img_url = img.xpath('.//img/@data-original')
            # 获取图片名字
            print(img_url)
            alt = img.xpath('.//p/text()')
            for name, new_url in zip(alt, img_url):
                filename = re.sub(r'[??.,。!!*\\/|]', '', name) + ".jpg"
                # 获取图片的后缀名
                # suffix = os.path.splitext(img_url)[1]
                # print(alt)
                self.img_queue.put((new_url, filename))


class Download(threading.Thread):
    def __init__(self, page_queue, img_queue):
        super(Download, self).__init__()
        self.page_queue = page_queue
        self.img_queue = img_queue

    def run(self):

        if self.img_queue.empty() and self.page_queue.empty():
            break
        img_url, filename = self.img_queue.get()
        with open("表情包/" + filename, "wb")as f:
            response = requests.get(img_url).content
            f.write(response)
            print(filename + '下载完成')


def main():
    # 建立队列
    page_q = Queue()
    img_q = Queue()
    for x in range(1, 11):
        url = 'https://www.doutula.com/search?type=photo&more=1&keyword=%E7%A8%8B%E5%BA%8F%E5%91%98&page={}'.format(x)
        page_q.put(url)

    for x in range(5):
        t = ImageParse(page_q, img_q)
        t.start()
        t = Download(page_q, img_q)
        t.start()


if __name__ == '__main__':
    main()

PS:表情包在手,聊天永不尬,没什么事是一个表情包解决不了的,如果有那就多发几个!对你有用的话给辣条一个三连吧,感谢啦!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192618.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java自学!java题库网站[通俗易懂]

    1.前言大家都知道,Postman是一个非常受欢迎的API接口调试工具,提供有Chrome扩展插件版和独立的APP,不过它的很多高级功能都需要付费才能使用。如果你连Postman都还没有用过,不妨可以先体验一番。Postman官网:https://www.getpostman.com/PS:由于2018年初Chrome停止对Chrome应用程序的支持,你的P****ostman插件可能无法正常使用了,在这里建议大家直接下载它的应用程序进行使用。虽然Postman作为一款接口调试工具,算是

    2022年4月15日
    35
  • 电商后台管理系统(一)

    电商后台管理系统(一)后台管理系统git地址:https://gitee.com/kk23851一.项目大体架构二.用户登录用户登录页面思路:用Element表单验证完成以后,把数据存储到本地用户登录代码位置如图:三.用户管理用户列表页面绘制用户列表基本结构,请求用户列表数据,将用户列表数据展示,实现用户列表分页,实现搜索功能,实现添加用户,修改用户信息,删除用户,分配权限用户管理代码位置如图:四.权限管理权限管理有俩个板块分别是角色列表和权限列表,用到的技术无非就是element-ui,所

    2022年6月10日
    48
  • webstorm激活码最新2021 4月【在线注册码/序列号/破解码】

    webstorm激活码最新2021 4月【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    114
  • nessus安装教程_kali安装nessus

    nessus安装教程_kali安装nessus(Windows安装教程)step1.官网下载对应操作系统安装包https://www.tenable.com/downloads/nessus1.pngstep2.正常双击程序安装等到最后一步finish完成后等会自动跳转出一个注册页面,或者打开浏览器输入https://localh…

    2022年10月10日
    1
  • 海思Hi3798硬件设计,Hi3798 datasheet(2)参考资料

    海思Hi3798硬件设计,Hi3798 datasheet(2)参考资料本文主要介绍Hi3798CV200芯片的硬件封装、管脚描述、管脚复用寄存器的配置方法、电气特性参数、原理图设计建议、PCB设计建议、热设计建议等内容。本文主要为硬件工程师提供硬件设计的参考。2.1封装Hi3798CV200芯片TFBGA(ThinFineBGApackage)封装,封装尺寸为19mm×19mm,管脚间距为0.8mm,管脚总数为433个,详细封装…

    2022年6月17日
    107
  • 安卓Menu键的问题

    安卓Menu键的问题

    2022年1月30日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号