spider_爬取斗图啦所有表情包(图片保存)

Posted yangqinghong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spider_爬取斗图啦所有表情包(图片保存)相关的知识,希望对你有一定的参考价值。

"""
爬取斗图吧里面的所有表情包

知识点总结:
一、使用requests库进行爬取,随机请求头(网站反爬措施少。挂个请求头足矣)

二、具体思路:
1.先爬取所有的图片url,放在列表里
2.循环遍历url请求这些图片,
3.将图片进行分类保存
三、分类保存用到一个知识点,endwith(以***结尾)
使用这个函数,将jpg,gif,png等不同类型的图片分开
四、演示案例中,只爬取了前20页。
五、各个定义的数字变量意思为:
n=1 网页页数
num=1 保存图片数

注:该案例主要是练习
    1.图片的保存,应注意,保存时使用字节流的形式。
    2.书写爬虫代码的逻辑思维。
"""
from fake_useragent import FakeUserAgent
import requests
import re
import time
import random
def getUrls():
# 将获取到的url列表在放到list这个列表里
url_list=[]
n=1
while True:
url = f"http://www.doutula.com/article/list/?page=n"
headers =
"User-Agent":FakeUserAgent().random

htmlStr = requests.get(url,headers=headers).text
# print(htmlStr)

# 定义 提取图片url的正则
urls = r‘data-original="(.*?)"‘
# 编译
urls = re.compile(urls)
#正则提取
urls = re.findall(urls,htmlStr)
url_list.append(urls)
print("正在收集第%s页的图片"%n)
n = n + 1
# 设置延时
time.sleep(0.5)
# 当n=21的时候,爬虫程序停止.为了演示方便只保存前二十页其实共有615页
if n == 21:
break
print(len(url_list))
return url_list


# 保存图片
# 以字节的形式将图片保存
def download(url_list):
num = 1
for urls in url_list:
for url in urls:
header=
"User-Agent":FakeUserAgent().random

# 因为爬取到的图片有两种,所以写了一个判断条件,分类保存,
if url.endswith(‘.jpg‘):
# 保存到本地
with open(‘./img/%s.jpg‘%num,‘wb‘) as file:
# 获取到图片 字节
img = requests.get(url, headers=header)
file.write(img.content)
print("正在保存第%s张图片"%num)
num += 1
time.sleep(0.3)
elif url.endswith(‘.gif‘):
# 保存到本地
with open(‘./img/%s.gif‘ % num, ‘wb‘) as file:
# 获取到图片 字节
img = requests.get(url, headers=header)
file.write(img.content)
print("正在保存第%s张图片" % num)
num += 1
time.sleep(0.3)

if __name__ == ‘__main__‘:
url_list=getUrls()
download(url_list)

以上是关于spider_爬取斗图啦所有表情包(图片保存)的主要内容,如果未能解决你的问题,请参考以下文章

不用正则表达式,爬取斗图啦

Python-爬取斗图啦网站

Python爬取斗图啦,妈妈再也不会担心我无图可刷了

斗图斗不过小伙伴?python多线程爬取斗图网表情包,助你成为斗图帝!

用Python多线程实现生产者消费者模式爬取斗图网的表情图片

python爬虫-26-批量爬取表情包,让你斗图再也不会陷入无图可发的窘境