Python堆糖网图片爬虫,多进程及多线程的使用例子
堆糖网,图片壁纸网站,存在反爬,发现返回的json数据错乱严重,只能爬取部分数据,图片数据缺失很厉害,应用python进行图片抓取采集下载,一个多进程及多线程的使用例子。
网址入口
get方式,参数
json数据
运行效果
单线程
#www.duitang.com
#20200603 by WX:huguo00289# -*- coding: utf-8 -*-
from fake_useragent import UserAgent
import urllib.parse
import requests,time,os,jsondef ua():ua=UserAgent()headers={'User-Agent':ua.random,'Cookie': 'sessionid=ef6912ba-38d9-4b6e-a3d9-8d6526805f07; js=1; Hm_lvt_d8276dcc8bdfef6bb9d5bc9e3bcfcaf4=1590492733,1591182385; Hm_lpvt_d8276dcc8bdfef6bb9d5bc9e3bcfcaf4=1591182414'}#headers = {'User-Agent': ua.random}return headersdef get_imgs(i,keyword):kd=urllib.parse.quote(keyword)url=f"https://www.duitang.com/napi/blog/list/by_search/?kw={kd}&type=feed&include_fields=top_comments%2Cis_root%2Csource_link%2Citem%2Cbuyable%2Croot_id%2Cstatus%2Clike_count%2Clike_id%2Csender%2Calbum%2Creply_count%2Cfavorite_blog_id&_type=&start={24*i}&_=159118241418{i}"html=requests.get(url,headers=ua(),timeout=8).content.decode('utf-8')time.sleep(1)datas=json.loads(html)object_lists=datas['data']['object_list']print(len(object_lists))for object_list in object_lists:print(object_list)img_url=object_list['album']['covers'][0]img_name='%s%s'%(object_list['album']['id'],os.path.splitext(img_url)[1])print(img_url,img_name)down_img(img_url, img_name,keyword)def down_img(img_url,img_name,keyword):os.makedirs(f'{keyword}/',exist_ok=True) #创建目录r=requests.get(img_url,headers=ua(),timeout=5)with open(f'{keyword}/{img_name}','wb') as f:f.write(r.content)print(f'>>>保存{img_name}图片成功!')def main(keyword):for i in range(1,10):print(f'>>>正在爬取第{i}页图片内容')get_imgs(i,keyword)print('采集图片完毕!')if __name__=='__main__':main("按钮")
多行程及多进程
#www.duitang.com
#20200603 by WX:huguo00289# -*- coding: utf-8 -*-
from fake_useragent import UserAgent
import urllib.parse
import requests,time,os,json
import threading #多线程
import multiprocessing #多进程def ua():ua=UserAgent()headers={'User-Agent':ua.random,'Cookie': 'sessionid=ef6912ba-38d9-4b6e-a3d9-8d6526805f07; js=1; Hm_lvt_d8276dcc8bdfef6bb9d5bc9e3bcfcaf4=1590492733,1591182385; Hm_lpvt_d8276dcc8bdfef6bb9d5bc9e3bcfcaf4=1591182414'}#headers = {'User-Agent': ua.random}return headersdef get_imgs(num,keyword):kd=urllib.parse.quote(keyword)print(f'>>>正在爬取第{num}页图片内容')url=f"https://www.duitang.com/napi/blog/list/by_search/?kw={kd}&type=feed&include_fields=top_comments%2Cis_root%2Csource_link%2Citem%2Cbuyable%2Croot_id%2Cstatus%2Clike_count%2Clike_id%2Csender%2Calbum%2Creply_count%2Cfavorite_blog_id&_type=&start={24*num}&_=159118241418{num}"html=requests.get(url,headers=ua(),timeout=8).content.decode('utf-8')time.sleep(1)datas=json.loads(html)object_lists=datas['data']['object_list']print(len(object_lists))threads = []for object_list in object_lists:print(object_list)img_url=object_list['album']['covers'][0]img_name='%s%s'%(object_list['album']['id'],os.path.splitext(img_url)[1])print(img_url,img_name)t = threading.Thread(target=down_img, args=(img_url,img_name,keyword))threads.append(t)for i in threads:i.start()for i in threads:i.join()print(num, 'is ok')def down_img(img_url,img_name,keyword):os.makedirs(f'{keyword}/',exist_ok=True) #创建目录r=requests.get(img_url,headers=ua(),timeout=5)with open(f'{keyword}/{img_name}','wb') as f:f.write(r.content)print(f'>>>保存{img_name}图片成功!')#单进程
def main(keyword):for i in range(1,10):get_imgs(i,keyword)print('采集图片完毕!')#多进程
def maindjc(keyword):pool = multiprocessing.Pool(processes=4) # 开4个进程for i in range(1, 10):pool.apply_async(func=get_imgs, args=(i, keyword))pool.close()pool.join()print('采集图片完毕!')if __name__=='__main__':maindjc("美女")
参考来源:
[Python 爬虫]煎蛋网 OOXX 妹子图爬虫(2)——多线程+多进程下载图片
https://tendcode.com/article/jiandan-meizi-spider-2/
Python堆糖网图片爬虫,多进程及多线程的使用例子相关推荐
- 爬取推糖网图片小案例
前言: 好久没有更新博文了,因为工作的关系,一直没有更新博文,今天有空,就给大家带来一个爬图片的小案例.今天的目标网站就是堆糖网,关于爬取这个网站图片的案例,肯定大家都看到很多,基本都是通过搜索图片的 ...
- 数据分析与爬虫实战视频——学习笔记(二)(千图网图片爬虫、fiddler抓包分析、腾讯视频评论爬虫、多线程爬虫(糗百))
网址:[数据挖掘]2019年最新python3 数据分析与数据爬虫实战 https://www.bilibili.com/video/av22571713/?p=26 第三周第二节课 1抓包分析实战 ...
- 数据挖掘 (三)——基于python的当当网小爬虫
导语 本文将实现利用Python爬取并简单地可视化分析当当网的图书数据. 详细的exe.源代码.程序解析等文件请关注公众号 行歌 知否, 回复关键词 当当网小爬虫 获取. 更多精彩内容请关注公众号 转 ...
- selenium爬堆糖网壁纸
身为二刺螈真的一看到动漫手绘美图就想保存下来啊,堆糖上有很多好看的插画,试着用selenium爬了一下,并保存到本地. # coding--utf8 import selenium import ti ...
- python爬虫无敌简单案列之堆糖网的图片爬取
导入模块: import requests import urllib.parse from urllib.request import urlretrieve 输入需要搜索的内容: num = 1 ...
- 用python写一个美女图片爬虫
介绍 最近无聊学了一下python,决定打算用python写一个爬虫,既然要写爬虫,就写一个美女爬虫,养眼,哈哈..你们懂的 准备阶段 首先我们必须先找到一个有美女的网站,这里我以7kk网站为例子, ...
- 如何用python做比分网_python爬虫足球比分-yltg888
python爬虫足球比分-yltg888 如果她拒绝了,她将会遭受到多少流言蜚语的攻击? "你不幼稚吗?"艾琳娜笑眯眯地问. 她要真这么做了,这位少爷绝对能气疯,然后实打实地一个月 ...
- python最新官网图片_Python轻松爬取Rosimm写真网站全部图片
RosimmImage 有图有真相 def main_start(url): """ 爬虫入口,主要爬取操作 """ try: r = re ...
- python二手房课程设计_【Python】赶集网二手房爬虫 (可扩展)
[Python] 纯文本查看 复制代码import requests import os from bs4 import BeautifulSoup class GanJi(): "&quo ...
- python最新官网图片_python爬取福利网站图片完整代码
存起来 自己学习... import requests,bs4,re,os,threading class MeiNvTu: def __init__(self): self.url_main='ht ...
最新文章
- svn之Previous operation has not finished; run ‘cleanup‘ if it was interrupted解决办法
- 数字图像处理:图像的频域
- $dbms=mysql_Oracle dbms
- 爬虫演练-动态的抓取cp网站数据的演练-注意要反爬
- 关于linux交换分区的增大
- ubuntu程序安装方法
- linux中vim中文显示乱码
- 带你轻轻松松了解route-map
- WebRTC自适应控制算法
- 如何在电脑上临时登录微信,快来看这里!怎样在电脑上登录微信
- A Surface Defect Detection Method Based on Positive Samples
- js实现bilibili弹幕列表随视频播放滚动
- Django管理后台之登录
- 实验七 计数器及其应用
- 解决swagger几种报错问题
- 《调色师手册:电影和视频调色专业技法(第2版)》——往返工作流程(Round-Trip workflows)...
- 机器学习必备知识之皮尔森系数实现
- 【CSDN备份】exsi+iKuai+openwrt安装
- 【拯救赵明】全面防护网络攻击服务器负载及安全解决方案
- 使用Hbuilder+Xcode打包iOS app前期准备
热门文章
- DirectX12初始化三——DirectX图形基础结构,功能支持检测,资源驻留
- 三星r381android+wear,三星Gear 2 成功连接非三星手机详细教程
- 当AI学会共情,港科大新研究赋予Chatbot同理心 | 一周AI最火论文
- 圆形头像制作,仿QQ做法。
- 七牛云上传的视频通过外链播放黑屏问题
- 计算机桌面图片打不开显示内存不足,windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足解决方法...
- win7设置自动开机时间_使计算机自动开机
- Android仿人人客户端(v5.7.1)——消息中心视图的实现
- Redis总结笔记(总结自Redis开发与运维)
- 使用VMware虚拟机搭建Panabit透明网桥环境