斗图高手教你用Python批量爬取表情包

前言

昨天跟小伙伴斗图,关于斗图这件事,我表示我从来没有输过。至于为什么不会输,这些都是男人的秘密,今天我想把这个小技

巧告诉大家。学会了记得挑战你最好的朋友,打赌让他输了请你吃大西瓜…
在这里插入图片描述

1、介绍

•平台:斗图啦

•语言:python

•技术:python多线程、python安全队列、python之Xpath、正则、request

以上我们使用的技术,都是之前整理过的对不对,那么我们就根据之前的学习内容来进行爬取斗图表情包吧。

在这里插入图片描述

2、python爬取流程梳理

我们刚开始学习的时候,是不是每次都需要梳理下爬取的流程呢,那么这次咱们还是和之前一样,首先我们需要找到我们爬取的平台的网址是什么:
https://dou.yuanmazg.com/doutu?page=1

访问这个界面之后,我们可以看到如下显示的内容:

在这里插入图片描述

然后我们往下滑之后,可以看到这里一共有1500+的页面,那么我们现在爬取前50页的内容吧,大概流程我觉得应该如下哈:

1.获取每个页面的url;


2.将获取到的url放置Queue中;


3.从Queue中获取一个Url,使用requests获取内容,使用xpath获取取该Url中每一个图片的Url;


4.然后将每个图片中的Url放入到另一个Queue中;


5.然后再从第二个Queue中获取图片的url;


6.根据Queue来下载并保存即可;


7.以上步骤我们使用多线程+Queue的形式来进行。

在这里插入图片描述

3、python爬取图片

3.1 框架

老样子,首先我们简简单单写一个框架;

import threading


class Producter(threading.Thread):
    pass


class Consumer(threading.Thread):
    pass


def main():
    pass


if __name__ == '__main__':
    main()

然后我们一步一步进行;

在这里插入图片描述

3.2 初步获取页面有效信息

python学习交流Q群:906715085###
import requests
from lxml import etree

Url = 'https://dou.yuanmazg.com/doutu?page=1'
Header = {
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
Page_get = requests.get(url=Url, headers=Header)
Page_content = Page_get.text
Page_message = etree.HTML(Page_content)
Page_div = Page_message.xpath('//div[@class="page-content"]')[0]
Page_div = etree.tostring(Page_div, pretty_print=True, method='html').decode('utf-8')
print(Page_div)


3.3  提取每一个图片的url和name
import requests
from lxml import etree

Url = 'https://dou.yuanmazg.com/doutu?page=1'
Header = {
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
Page_get = requests.get(url=Url, headers=Header)
Page_content = Page_get.text
Page_message = etree.HTML(Page_content)
Page_div = Page_message.xpath('//div[@class="page-content"]//a//img')
# Page_div = etree.tostring(Page_div, pretty_print=True, method='html').decode('utf-8')
# print(Page_div)
for i in Page_div:
    # print(etree.tostring(i, pretty_print=True, method='html').decode('utf-8'))
    Page_url = 'https://dou.yuanmazg.com' + i.xpath("@data-original")[0]
    Page_name = i.xpath("@alt")</
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值