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

知识点总结:
一、使用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_爬取斗图啦所有表情包(图片保存)的更多相关文章

  1. python多线程爬取斗图啦数据

    python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...

  2. 爬取斗图网图片,使用xpath格式来匹配内容,对请求伪装成浏览器, Referer 防跨域请求

    6.21自我总结 一.爬取斗图网 1.摘要 使用xpath匹配规则查找对应信息文件 将请求伪装成浏览器 Referer 防跨域请求 2.爬取代码 #导入模块 import requests #爬取网址 ...

  3. python爬取斗图网中的 “最新套图”和“最新表情”

    1.分析斗图网 斗图网地址:http://www.doutula.com 网站的顶部有这两个部分: 先分析“最新套图” 发现地址栏变成了这个链接,我们在点击第二页 可见,每一页的地址栏只有后面的pag ...

  4. Python爬取 斗图表情,让你成为斗图大佬

    话不多说,上结果(只爬了10页内容) 上代码:(可直接运行)   用到Xpath #encoding:utf-8 # __author__ = 'donghao' # __time__ = 2018/ ...

  5. 爬虫之爬取豆瓣top250电影排行榜及爬取斗图啦表情包解读及爬虫知识点补充

    今日内容概要 如何将爬取的数据直接导入Excel表格 #如何通过Python代码操作Excel表格 #前戏 import requests import time from openpyxl impo ...

  6. py3+requests+urllib+bs4+threading,爬取斗图图片

    实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/UncleYong/p/6892688. ...

  7. shell爬取斗图网

    #!/bin/bash read -p "请输入要爬取的页面数(默认为10):" page_num page_num=${page_num:-} echo $page_num re ...

  8. Python 2.7和3.6爬取妹子图网站单页测试图片

    1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;req ...

  9. Python 2.7_爬取妹子图网站单页测试图片_20170114

    1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;req ...

  10. scrapy-爬取斗图

    scrapy-爬取斗图代码   <一> 开局三连杀    1.创建run的文件  

随机推荐

  1. 对象的反序列化流_ObjectInputStream类

    对象的反序列化流_ObjectInputStream类 ObjectInputStream反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象. 构造方法 public ...

  2. 写出单个字符到文件-flush方法和close方法的区别

    写出单个字符到文件 flush方法和close方法的区别 因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中.但是关闭的流对象,是无法继续写出数据的.如果我们既想写出数据,又想继续使用流,就 ...

  3. file类创建删除功能的方法-file类遍历(文件夹)目录功能

    file类创建删除功能的方法 public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件.public boolean delete(︰删除由 ...

  4. HuggingNews #0210 这周模型有点多,快来看看吧

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  5. Vue 04 谷歌浏览器配置vue开发者工具

    参考链接:https://blog.csdn.net/wswq2505655377/article/details/111476799 1 插件下载 由于国内打不开谷歌商店,直接从网盘下载 链接:ht ...

  6. C++_bind用法

    1.bind函数 网络编程中, 经常要使用到回调函数. 当底层的网络框架有数据过来时,往往通过回调函数来通知业务层. 这样可以使网络层只专注于 数据的收发, 而不必关心业务 在c语言中, 回调函数的实 ...

  7. SpringMVC的文件、数据校验(Vaildator、Annotation JSR-303)

    SpringMvc的文件上传下载: 文件上传 单文件上传 1.底层使用的是Apache fileupload组件进行上传的功能,Springmvc 只是对其进行了封装,简化开发, pom.xml &l ...

  8. 郁金香 用C写一个定时器来循环获取阳光

    先来张效果图 定时器代码   HWND 游戏窗口句柄 = FindWindowA("MainWindow", "植物大战僵尸中文版"); ::SetTimer( ...

  9. Docker全方位攻略与自动化运维

    介绍 Docker Registry(Docker注册中心)是一个管理Docker容器镜像存储和交付的应用程序.注册中心集中容器镜像并减少开发人员的构建时间.Docker镜像通过虚拟化保证相同的运行环 ...

  10. The size of the request headers is too long.

    当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of ...