找回密码
  注册[Register]
查看: 1528|回复: 17

python爬取某网站妹子图集

[复制链接]
发表于 2020-10-18 16:35 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

  1. import requests
  2. from lxml import etree
  3. import time
  4. import os
  5. import re

  6. def huoquyuanma(url = 'https://www.tujigu.com/'):
  7.     headers = {
  8.         'Accept': '*/*',
  9.         'Accept-Language': 'en-US,en;q=0.8',
  10.         'Cache-Control': 'max-age=0',
  11.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36',
  12.         'Connection': 'keep-alive',
  13.         'Referer': 'http://www.baidu.com/'
  14.             }
  15.     try:
  16.         new = requests.get(url , headers=headers , timeout = 16)  #获取源码
  17.         time.sleep(2)                                       #等待
  18.         new.encoding = new.apparent_encoding   #防乱码
  19.         t = new.text
  20.         t = etree.HTML(t)   #转换成xml格式
  21.         return t
  22.     except:
  23.         print(f'获取{url}页面失败,已经放弃!')
  24.         pass

  25. def huoquzuidaye (count):
  26.     t = huoquyuanma()
  27.     shuliang = t.xpath('//div[5]/ul/li[1]/a/@href')   #取得最新图集链接
  28.     zuidashu = shuliang[0].split('/')    #分割链接,取得最大的图集数量
  29.     if int(count) +6 > int(zuidashu[-2]):
  30.         # 最大图集数量获取的是首页最新图集的编号!
  31.         print(f'输入的数值超过现有图集数量,已经把数量更改为现有图集数量{zuidashu[-2]}')
  32.         print('准备开始>>>>>>>')
  33.         return zuidashu[-2]
  34.     else:
  35.         print('准备开始>>>>>>>')
  36.         return count + 6

  37. def huoqutujimingcheng(url):
  38.     url1 = url
  39.     t = huoquyuanma(url1)  # 获取页面源码
  40.     tujimingc = t.xpath('//div[@class="tuji"]/div[@class="weizhi"]/h1/text()')   #获取图集标题
  41.     tup = t.xpath('//div[@class="tuji"]/p[3]/text()')    #获取图集内图片数量
  42.     pppp = tup[0].split('P')        #分割文本去掉数字后的”p“
  43.     mp = pppp[0].split(' ')        #分割文本 获得图集内图片数量的数字
  44.     link = t.xpath('//*[@id="pages"]/a/@href')
  45.     zishuliang = t.xpath('//*[@id="pages"]/text()/following-sibling::a/text()')         #子页面总数量
  46.     # print(link)
  47.     return mp[1] , tujimingc ,link,zishuliang[-2]   #把图集内图片数量和图集名称返回

  48. zongji = 0  
  49. print('采集的图集数量最小为1')
  50. count = input('请输入需要采集的图集数量:')

  51. zuidaye = int(huoquzuidaye(count))           #调用函数取得最大图集编号
  52. for i in range(6,zuidaye):                 #在6-最大图集编号中间循环
  53.     tuji = 'https://www.tujigu.com/a/' + str(i) + '/'          #构造url
  54.     # print(tuji)
  55.     aaa = huoqutujimingcheng(tuji)                              #调用函数取得图集名称和图集内图片数量及全部的图集子页面url
  56.     mingcheng = 1                        #实在不知道咋命名了……随便弄了个变量命名!
  57.     name = re.sub('\s' , '' , aaa[1][0])           #清理一下获取到的图集名,免得命名文件夹的时候出现奇怪的问题
  58.     path = 'D:/tujigu/'+str(name)                                   #构造存储路径
  59.     if not os.path.exists(path):               
  60.         os.makedirs(path)                       #如果路径不存在就创建
  61.     ss = int(aaa[3])
  62.     for j in range(1,ss+1):
  63.         if j == 1:
  64.             ht =  'https://www.tujigu.com/a/' + str(i) + '/'           #第一页后面加后缀不能访问
  65.         else:
  66.             ht =  'https://www.tujigu.com/a/' + str(i) + '/' + str(j) + '.html'      #构造第二页以后的页面
  67.         piclist = huoquyuanma(ht).xpath('//div[@class="content"]/img/@src')            #获取当前页面下所有的图片列表
  68.         for m in piclist:
  69.             # print(f'正在采集{aaa[1][0]}的第{mingcheng}张,一共{aaa[0]}张')
  70.             tupian = requests.get(m)                  
  71.             with open(path + '/' + str(mingcheng) + '.jpg' , 'wb') as f:                 #写入图片
  72.                 f.write(tupian.content)
  73.             zongji += 1
  74.             print(f'{aaa[1][0]}的第{mingcheng}张采集完毕!一共{aaa[0]}张,还剩{int(aaa[0]) - mingcheng}张!当前图集编号:{i}')
  75.             mingcheng += 1                                    
  76.             
  77. print(f'采集完毕!本次采集一共采集到了{zongji}张图片!')
复制代码


如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-10-18 17:00 来自手机 | 显示全部楼层
感谢大佬分享,大牛因有你而更精彩。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-18 20:10 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-18 20:50 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

w
发表于 2020-10-18 21:25 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-18 23:27 | 显示全部楼层
谢谢楼主分享,先收藏了。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-18 23:28 | 显示全部楼层
多谢分享多谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-19 00:36 | 显示全部楼层

不错不错,,,
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-19 14:31 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-10-19 15:01 | 显示全部楼层
多谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|广告投放|大牛论坛

GMT+8, 2024-6-9 13:55 , Processed in 0.033530 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表