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多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...
- 爬取斗图网图片,使用xpath格式来匹配内容,对请求伪装成浏览器, Referer 防跨域请求
6.21自我总结 一.爬取斗图网 1.摘要 使用xpath匹配规则查找对应信息文件 将请求伪装成浏览器 Referer 防跨域请求 2.爬取代码 #导入模块 import requests #爬取网址 ...
- python爬取斗图网中的 “最新套图”和“最新表情”
1.分析斗图网 斗图网地址:http://www.doutula.com 网站的顶部有这两个部分: 先分析“最新套图” 发现地址栏变成了这个链接,我们在点击第二页 可见,每一页的地址栏只有后面的pag ...
- Python爬取 斗图表情,让你成为斗图大佬
话不多说,上结果(只爬了10页内容) 上代码:(可直接运行) 用到Xpath #encoding:utf-8 # __author__ = 'donghao' # __time__ = 2018/ ...
- 爬虫之爬取豆瓣top250电影排行榜及爬取斗图啦表情包解读及爬虫知识点补充
今日内容概要 如何将爬取的数据直接导入Excel表格 #如何通过Python代码操作Excel表格 #前戏 import requests import time from openpyxl impo ...
- py3+requests+urllib+bs4+threading,爬取斗图图片
实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/UncleYong/p/6892688. ...
- shell爬取斗图网
#!/bin/bash read -p "请输入要爬取的页面数(默认为10):" page_num page_num=${page_num:-} echo $page_num re ...
- Python 2.7和3.6爬取妹子图网站单页测试图片
1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;req ...
- Python 2.7_爬取妹子图网站单页测试图片_20170114
1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;req ...
- scrapy-爬取斗图
scrapy-爬取斗图代码 <一> 开局三连杀 1.创建run的文件
随机推荐
- MySQL中多种排名实现
一.数据库表结构以及数据 CREATE TABLE `forlan_score` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', ...
- Entry键值对对象-Map集合遍历键值对方式
Entry键值对对象 我们已经知道,Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在[Map中是-对应关系,这一对对象又称做Map 中的一个 Entry(项).Ent ...
- 在Spring Boot中整合Katharsis,来快速开发JSON API的Web应用
1 简介 我们进行Web API开发的时候,经常会使用Json格式的消息体,而Json格式非常灵活,不同的人会有不同的设计风格和实现,而JSON API提供了一套标准.但它并不提供直接实现. Kath ...
- 基于APIView写接口
一.视图层代码 """ 基于APIView实现接口的编写 用的是同一个模型表 路由也没变 这次做了解耦合 写了序列化类 与视图类分开了 """ ...
- 【Rust学习】内存安全探秘:变量的所有权、引用与借用
作者:京东零售 周凯 一.前言 Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月,是一种高效.可靠的通用高级语言.其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有 ...
- CentOS即将停止维护,拥抱阿里“龙蜥“(Anolis OS),VMware安装Anolis OS与介绍
一.前言 大家在自己电脑来进行服务器的一些操作时,基本都是使用CentOS 7或者是CentOS 8,但是2021年底CentOS 8宣布停止了维护:CentOS 7 在2024年6月30日也会停止维 ...
- Nginx03 虚拟主机
1 虚拟主机 虚拟主机使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每一台虚拟主机都具有独立的域名,具有完整的Internet服务器(WWW.FT ...
- ECharts 饼图切换数据源bug 开始没数据显示 切换或刷新后显示
1.出现问题原因 一个饼图,右上方两个按钮分别为今天和本月,分别调用不同接口控制,点击则调用不同接口同时饼图绑定数据源刷新:出现此问题原因点击今日按钮有一个饼图区域形没有数据不显示,对应数据值比例都没 ...
- Linux练习题--打印文本第10行
文本test.txt,需要打印文本第10行 方法一: sed -n '10p' test.txt 说明:sed命令使用-n参数时,只有经过sed 特殊处理的那一行(或者动作)才会被列出来. 命令&qu ...
- SPA路由实现的基本原理
1. SPA路由实现的基本原理 前端单页应用实现路由的策略有两种,分别是 基于hash 和 基于 History API 基于hash 通过将一个 URL path 用 # Hash 符号拆分.- 浏 ...