前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python爬取论坛图片_python爬取某网站妹子图集

python爬取论坛图片_python爬取某网站妹子图集

作者头像
全栈程序员站长
发布2022-09-09 11:44:07
1.5K0
发布2022-09-09 11:44:07
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

import requests

from lxml import etree

import time

import os

import re

def huoquyuanma(url = ‘https://www.tujigu.com/’):

headers = {

‘Accept’: ‘*/*’,

‘Accept-Language’: ‘en-US,en;q=0.8’,

‘Cache-Control’: ‘max-age=0’,

‘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’,

‘Connection’: ‘keep-alive’,

‘Referer’: ‘http://www.baidu.com/’

}

try:

new = requests.get(url , headers=headers , timeout = 16) #获取源码

time.sleep(2) #等待

new.encoding = new.apparent_encoding #防乱码

t = new.text

t = etree.HTML(t) #转换成xml格式

return t

except:

print(f’获取{url}页面失败,已经放弃!’)

pass

def huoquzuidaye (count):

t = huoquyuanma()

shuliang = t.xpath(‘//div[5]/ul/li[1]/a/@href’) #取得最新图集链接

zuidashu = shuliang[0].split(‘/’) #分割链接,取得最大的图集数量

if int(count) +6 > int(zuidashu[-2]):

# 最大图集数量获取的是首页最新图集的编号!

print(f’输入的数值超过现有图集数量,已经把数量更改为现有图集数量{zuidashu[-2]}’)

print(‘准备开始>>>>>>>’)

return zuidashu[-2]

else:

print(‘准备开始>>>>>>>’)

return count + 6

def huoqutujimingcheng(url):

url1 = url

t = huoquyuanma(url1) # 获取页面源码

tujimingc = t.xpath(‘//div[@class=”tuji”]/div[@class=”weizhi”]/h1/text()’) #获取图集标题

tup = t.xpath(‘//div[@class=”tuji”]/p[3]/text()’) #获取图集内图片数量

pppp = tup[0].split(‘P’) #分割文本去掉数字后的”p“

mp = pppp[0].split(‘ ‘) #分割文本 获得图集内图片数量的数字

link = t.xpath(‘//*[@id=”pages”]/a/@href’)

zishuliang = t.xpath(‘//*[@id=”pages”]/text()/following-sibling::a/text()’) #子页面总数量

# print(link)

return mp[1] , tujimingc ,link,zishuliang[-2] #把图集内图片数量和图集名称返回

zongji = 0

print(‘采集的图集数量最小为1’)

count = input(‘请输入需要采集的图集数量:’)

zuidaye = int(huoquzuidaye(count)) #调用函数取得最大图集编号

for i in range(6,zuidaye): #在6-最大图集编号中间循环

tuji = ‘https://www.tujigu.com/a/’ + str(i) + ‘/’ #构造url

# print(tuji)

aaa = huoqutujimingcheng(tuji) #调用函数取得图集名称和图集内图片数量及全部的图集子页面url

mingcheng = 1 #实在不知道咋命名了……随便弄了个变量命名!

name = re.sub(‘\s’ , ” , aaa[1][0]) #清理一下获取到的图集名,免得命名文件夹的时候出现奇怪的问题

path = ‘D:/tujigu/’+str(name) #构造存储路径

if not os.path.exists(path):

os.makedirs(path) #如果路径不存在就创建

ss = int(aaa[3])

for j in range(1,ss+1):

if j == 1:

ht = ‘https://www.tujigu.com/a/’ + str(i) + ‘/’ #第一页后面加后缀不能访问

else:

ht = ‘https://www.tujigu.com/a/’ + str(i) + ‘/’ + str(j) + ‘.html’ #构造第二页以后的页面

piclist = huoquyuanma(ht).xpath(‘//div[@class=”content”]/img/@src’) #获取当前页面下所有的图片列表

for m in piclist:

# print(f’正在采集{aaa[1][0]}的第{mingcheng}张,一共{aaa[0]}张’)

tupian = requests.get(m)

with open(path + ‘/’ + str(mingcheng) + ‘.jpg’ , ‘wb’) as f: #写入图片

f.write(tupian.content)

zongji += 1

print(f'{aaa[1][0]}的第{mingcheng}张采集完毕!一共{aaa[0]}张,还剩{int(aaa[0]) – mingcheng}张!当前图集编号:{i}’)

mingcheng += 1

print(f’采集完毕!本次采集一共采集到了{zongji}张图片!’)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160632.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档