python最新官网图片_python爬取福利网站图片完整代码
存起来 自己学习。。。
import requests,bs4,re,os,threading
class MeiNvTu:
def __init__(self):
self.url_main='https://网址/pw/'
self.url=f'{self.url_main}thread.php?fid='
def getPageMax(self,typeID=14):
try:
res = requests.get(f'{self.url}{typeID}')
res.encoding = 'utf-8'
soup = bs4.BeautifulSoup(res.text, 'lxml')
pageNum = soup.select('#main > div > span.fl > div.pages.cc > span')
pageNum = int(re.search('/(.*?)Go', str(pageNum)).group(1))
return pageNum
except:
return 0
def getTitleList(self,typeID=14,page=1):
'''
爬取栏目里某一页的列表,网络错误返回False
:param typeID:
:param page:
:return:
'''
try:
res=requests.get(f'{self.url}{typeID}&page={page}')
res.encoding= 'utf-8'
soup=bs4.BeautifulSoup(res.text,'lxml')
listTitle=soup.select('tr > td > h3')
lists=[]
for item in listTitle:
if 'html_data' in item.a['href'] :
d={}
d['href']=self.url_main+item.a['href']
d['title']=item.a.text
lists.append(d)
return lists
except:
return False
def downImg(self,url,path):
'''
下载一整个页面的图片
:param url:
:param path:
:return:
'''
global pool_sema
res = requests.get(url)
res.encoding = 'utf-8'
soup = bs4.BeautifulSoup(res.text, 'lxml')
imgs=soup.select('#read_tpc > img')
lists=[]
try:
for i,item in enumerate(imgs):
imgUrl=re.search("window.open\('(.*?)'\);", str(item['onclick'])).group(1)
imgData=requests.get(imgUrl).content
typ=imgUrl.split('.')[-1]
with open(f'{path}{i}.{typ}','wb')as f:
f.write(imgData)
except:
print('\033[31m[下载失败!网络异常] ' + path)
pool_sema.release()
return
#将下载好的情况记录下来,下次可以跳过
textpath=''
for item in path.split('\\')[0:3]:
textpath=textpath+item+'\\'
mutex.acquire()
try:
with open(textpath+'log.txt','a')as f:
f.writelines(path.split('\\')[3]+'\n\r')
except:
pass
mutex.release()
# 完成后线程池记录-1
print('\033[31m[完成下载] '+path)
pool_sema.release()
def get_typeTitle(self,id):
'''
返回类型的标题
:param id:
:return:
'''
if id==14:
return '唯美写真'
if id==15:
return '网友马赛克'
if id==16:
return '露出马赛克'
if id==49:
return '街拍马赛克'
if id==21:
return '丝袜美腿'
if id==114:
return '欧美马赛克'
def downloadthe(self,title,path):
'''
判断是否已经下载过,下载过返回True,没下载过返回False
:param title:
:param path:
:return:
'''
try:
with open(path+'log.txt', 'r')as f:
text = f.read()
if title in text:
return True
else:
return False
except:
return False
def get_Page_History(self,path):
'''
读取上一次结束 的页码
:param path:
:return:
'''
try:
with open(path+'pagelog.ini','r')as f:
return int(f.read())
except:
return 0
if __name__ == '__main__':
# 限制线程数量
pool_sema = threading.BoundedSemaphore(70)
# 创建互斥体
mutex = threading.Lock()
#创建爬取对象
mnt=MeiNvTu()
#栏目id
typeID=21
#获得最大页数
page_max=mnt.getPageMax(typeID)
if page_max==0:
print('\033[31m网络错误!,总页数为0')
else:
path_main= f"D:\\爬取的网站图片\\{mnt.get_typeTitle(typeID)}\\"
if os.path.isdir(path_main) != True:
os.makedirs(path_main, mode=0o777)
#爬取某页的列表
page_History=mnt.get_Page_History(path_main)
for i in range(page_max):
#跳过之前下载过的页码
if i+1
print(f'\033[37m跳过页码:{i + 1}')
continue
#记录下来页码
with open(path_main+'pagelog.ini','w')as f:
f.write(str(i+1))
print(f'\033[37m当前页码:{i+1}')
titleList = mnt.getTitleList(typeID, i + 1)
if titleList==False:
print('\033[31m网络错误!,列表获取失败!')
break
for item in titleList:
title=item['title'].replace(' ','').replace(':','').replace('!','').replace('?','').replace('*','').replace('"','')
path = path_main + title + "\\"
#判断是否有这个目录,没有的话就建立
if os.path.isdir(path) != True:
os.makedirs(path, mode=0o777)
if mnt.downloadthe(title,path_main)==False:
# 线程池记录+1
pool_sema.acquire()
print('\033[37m[开始下载] '+path)
# 爬取某个标题中的所有图片
t=threading.Thread(target=mnt.downImg,args=(item['href'], path))
t.setDaemon(True)
t.start()
else:
print('\033[35m发现下载过的:',title,' 已经智能跳过!')
python最新官网图片_python爬取福利网站图片完整代码相关推荐
- python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂
网址需要自己替换懂的人都懂512*2,主要学习简单的爬虫,别乱用,否则后果自负! [Python] 纯文本查看 复制代码 import requests,bs4,re,os,threadingclas ...
- python爬虫知乎图片_python 爬取知乎图片
先上完整代码 1 importrequests2 importtime3 importdatetime4 importos5 importjson6 importuuid7 from pyquery ...
- python爬虫网页中的图片_Python爬取网页中的图片(搜狗图片)详解
前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片http://pic.s ...
- python制作手机壁纸_Python爬取手机壁纸图片
使用Python爬取图片. 1 说明 本文通过爬虫程序的编写,实现了一个简单易懂的爬虫程序,方便初学者理解,主要程序分为网页获取函数,以及保存下载函数,这就是所有爬虫程序的基本思想.(本文不涉及反爬, ...
- python爬取贴吧图片_Python爬取贴吧多页图片
Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了. #coding:utf-8 import urllib import urllib2 import re import os ...
- python自动换壁纸_Python爬取必应每日图片并实现Windows壁纸自动切换
不知道大家是否对每日一成不变的壁纸感到厌倦呢?反正对于我个人来说,如果每天打开电脑映入眼帘的都是不同的画面,那么科研热情都会被充分激发,从而提高自己的劳动生产力. 原来使用的是Deepin系统,自己写 ...
- python批量访问网页保存结果_Python爬虫(批量爬取某网站图片)
1.需要用到的库有: Requests re os time 如果没有安装的请自己安装一下,pycharm中打开终端输入命令就可以安装 2.IDE : pycharm 3.python 版本: 3.8 ...
- python协程gevent案例:爬取斗鱼美女图片
分析 分析网站寻找需要的网址 用谷歌浏览器摁F12打开开发者工具,然后打开斗鱼颜值分类的页面,如图: 在里面的请求中,最后发现它是以ajax加载的数据,数据格式为json,如图: 圈住的部分是我们需要 ...
- python手机壁纸高清_python爬取手机壁纸
最近学习lxml库,拿一个普通的手机壁纸网站练手,现将具体操作过程记录下来,一来可以达到记录的作用,二来也希望能和大家多交流,提高自己的代码能力. 第一步:导入需要的库表采用requests库进行页面 ...
最新文章
- 浅谈通信编程(二)--如何分离通信物理接口和应用程序
- SpringMVC系列(二): SpringMVC各个注解的使用
- EasyUi通过OCUpload上传及POI上传 实现导入xls表格功能
- android 网络图片查看器,Handler的用法
- ASP.NET:页面保存为WORD出现的问题!
- (需求实战_进阶_04)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试
- 基于matlab 的图像重建,基于Matlab的2D-FFT图像重建软件的设计
- PHP截取UTF-8字符串,解决半字符问题
- 基于visual Studio2013解决面试题之1102合并字符串
- 九大背包问题专题--二维费用的背包问题
- mysql utf-8转utf8mb4_MySQL UTF8 转为 utf8mb4
- 幕客网学习摘要记录1
- 中兴新支点国产操作系统下载安装WPS办公软件,好用无广告
- lamp一键安装包不安装mysql_LAMP一键安装包安装与配置
- java字符串in.next_java中 nextString()怎么用
- pmap anon 内存泄露
- jQuery实现密保互斥问题
- Linux删除重复行
- 搞线上渠道推广实操这么些年了
- arduino智能浇花系统_基于Arduino的远程自动浇花系统设计
热门文章
- 机器人庄园作文_憧憬未来的作文
- c语言,十六进制转十进制
- Apache Dolphinscheduler3.0.0-beta-1 版本发布,新增FlinkSQL、Zeppelin任务类型
- 带你领略Android Jetpack组件的魅力
- python基于selenium实现自动删除qq空间留言板
- 玩转Ubuntu(Ubuntu查看本机的ip地址,适用于Linux)
- 搭建windows终端服务器,win2003安装终端服务器组件教程
- python爬虫+词云生成小说简介
- java中SQL查询语句有like '%?%'怎么写
- 元宇宙概念的一次现实投影,北京冬奥圆满谢幕