存起来 自己学习。。。

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爬取福利网站图片完整代码相关推荐

  1. python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂

    网址需要自己替换懂的人都懂512*2,主要学习简单的爬虫,别乱用,否则后果自负! [Python] 纯文本查看 复制代码 import requests,bs4,re,os,threadingclas ...

  2. python爬虫知乎图片_python 爬取知乎图片

    先上完整代码 1 importrequests2 importtime3 importdatetime4 importos5 importjson6 importuuid7 from pyquery ...

  3. python爬虫网页中的图片_Python爬取网页中的图片(搜狗图片)详解

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片http://pic.s ...

  4. python制作手机壁纸_Python爬取手机壁纸图片

    使用Python爬取图片. 1 说明 本文通过爬虫程序的编写,实现了一个简单易懂的爬虫程序,方便初学者理解,主要程序分为网页获取函数,以及保存下载函数,这就是所有爬虫程序的基本思想.(本文不涉及反爬, ...

  5. python爬取贴吧图片_Python爬取贴吧多页图片

    Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了. #coding:utf-8 import urllib import urllib2 import re import os ...

  6. python自动换壁纸_Python爬取必应每日图片并实现Windows壁纸自动切换

    不知道大家是否对每日一成不变的壁纸感到厌倦呢?反正对于我个人来说,如果每天打开电脑映入眼帘的都是不同的画面,那么科研热情都会被充分激发,从而提高自己的劳动生产力. 原来使用的是Deepin系统,自己写 ...

  7. python批量访问网页保存结果_Python爬虫(批量爬取某网站图片)

    1.需要用到的库有: Requests re os time 如果没有安装的请自己安装一下,pycharm中打开终端输入命令就可以安装 2.IDE : pycharm 3.python 版本: 3.8 ...

  8. python协程gevent案例:爬取斗鱼美女图片

    分析 分析网站寻找需要的网址 用谷歌浏览器摁F12打开开发者工具,然后打开斗鱼颜值分类的页面,如图: 在里面的请求中,最后发现它是以ajax加载的数据,数据格式为json,如图: 圈住的部分是我们需要 ...

  9. python手机壁纸高清_python爬取手机壁纸

    最近学习lxml库,拿一个普通的手机壁纸网站练手,现将具体操作过程记录下来,一来可以达到记录的作用,二来也希望能和大家多交流,提高自己的代码能力. 第一步:导入需要的库表采用requests库进行页面 ...

最新文章

  1. 浅谈通信编程(二)--如何分离通信物理接口和应用程序
  2. SpringMVC系列(二): SpringMVC各个注解的使用
  3. EasyUi通过OCUpload上传及POI上传 实现导入xls表格功能
  4. android 网络图片查看器,Handler的用法
  5. ASP.NET:页面保存为WORD出现的问题!
  6. (需求实战_进阶_04)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试
  7. 基于matlab 的图像重建,基于Matlab的2D-FFT图像重建软件的设计
  8. PHP截取UTF-8字符串,解决半字符问题
  9. 基于visual Studio2013解决面试题之1102合并字符串
  10. 九大背包问题专题--二维费用的背包问题
  11. mysql utf-8转utf8mb4_MySQL UTF8 转为 utf8mb4
  12. 幕客网学习摘要记录1
  13. 中兴新支点国产操作系统下载安装WPS办公软件,好用无广告
  14. lamp一键安装包不安装mysql_LAMP一键安装包安装与配置
  15. java字符串in.next_java中 nextString()怎么用
  16. pmap anon 内存泄露
  17. jQuery实现密保互斥问题
  18. Linux删除重复行
  19. 搞线上渠道推广实操这么些年了
  20. arduino智能浇花系统_基于Arduino的远程自动浇花系统设计

热门文章

  1. 机器人庄园作文_憧憬未来的作文
  2. c语言,十六进制转十进制
  3. Apache Dolphinscheduler3.0.0-beta-1 版本发布,新增FlinkSQL、Zeppelin任务类型
  4. 带你领略Android Jetpack组件的魅力
  5. python基于selenium实现自动删除qq空间留言板
  6. 玩转Ubuntu(Ubuntu查看本机的ip地址,适用于Linux)
  7. 搭建windows终端服务器,win2003安装终端服务器组件教程
  8. python爬虫+词云生成小说简介
  9. java中SQL查询语句有like '%?%'怎么写
  10. 元宇宙概念的一次现实投影,北京冬奥圆满谢幕