斗图网网址:斗图网,这里以爬取最新套图为例。
网站观察
在网页翻页操作中可以看到网页是非动态加载的(page为页码),那么通过requests方式爬取要更为快捷。
可以看到每个套图都在分别不同的框中,那么首先就要爬取每个套图的具体链接。
通过检查(f12)可以发现每个套图的链接地址
在每个具体链接中又可以得到具体的套图表情包
同样可以得到每个图片的下载链接
爬取框架
综上分析,可将具体的爬取过程分为:获取每个套图的链接 > 获取每个表情的链接 > 下载,而对于要下载的图片,若此处一个一个下载,则会耗时极长,故此处选择多线程方式进行爬取。
具体代码
import requests
import threading
import time
import os
import re
from urllib import request
from lxml import etree
from queue import Queue
# 生产者类用于爬取表情包链接
class Producer(threading.Thread):
HEADERS = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
def __init__(self,page_queue,img_queue,*args,**kwargs):
super(Producer,self).__init__(*args,**kwargs)
self.page_queue = page_queue
self.img_queue = img_queue
def