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

python爬取论坛图片_python爬取某网站妹子图集importrequestsfromlxmlimportetreeimporttimeimportosimportredefhuoquyuanma(url=’https://www.tujigu.com/’):headers={‘Accept’:’*/*’,’Accept-Language’:’en-US,en;q=0.8′,’Cache-Control’:’max-…

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

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.net/160632.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ASMM与AMM「建议收藏」

    ASMM与AMM「建议收藏」ASMM(AutomaticSharedMemoryManagement,自动共享内存管理)是Oracle10g引入的概念。通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为SGA设置一个总的大小,Oracle的MMAN进程(MemoryManagerProcess,内存管理进程)会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。ASMM的…

    2022年5月2日
    87
  • jboss版本_输入法下载

    jboss版本_输入法下载昨天和今天到jboss区下载jboss4.0.4或者其他版本,没有一个下的了,太烂了,网站怎能这样,现在是什么时代呀,免费的或者收费的服务都应该要做的很好才是.感觉现在的软件的功能远远没有达到我心目中理想的位置,也不知何年何月我才对会软件的功能称好!也许软件就是这样吧,开发要成本,做得很好是几乎不可能的了.

    2022年9月28日
    4
  • power函数_power pivot函数

    power函数_power pivot函数#include<stdio.h>#include<math.h>//power函数doublepower(doublex,doubley);intmain(){ do

    2022年8月5日
    11
  • 网络编程-UDP编程

    网络编程-UDP编程2.UDP端口和TCP端口虽然都使用0~65535,但他们是两套独立的端口,即一个应用程序用TCP占用了端口1234,不影响另一个应用程序用UDP占用端口1234。在Java中使用UDP编程,仍然需要使用Socket,因为应用程序在使用UDP时必须指定网络接口(IP地址)和端口号。1.UDP和TCP编程相比,UDP编程就简单得多,因为UDP没有创建连接,数据包也是一次收发一个,所以没有流的概念。和服务器端相比,客户端使用UDP时,只需要直接向服务器端发送UDP包,然后接收返回的UDP包。…

    2025年10月8日
    6
  • 【工作技巧】WinRAR去除广告

    【工作技巧】WinRAR去除广告一、下载软件1.1、进入WinRAR国内官网,根据个人电脑系统位数进行下载对应的安装包。傻瓜式安装WinRAR,全部点击下一步。1.3、进入ResourceHacker官网,点击Download,然后点击EXEinstall,下载安装包。傻瓜式安装ResourceHacker,全部点击下一步。二、修改WinRAR.exe2.1、打开ResourceHacker程序,使用快捷键【Ctrl+O】选择WinRAR.exe文件。一般路径为【D:\ProgramFiles\WinRAR\Wi

    2022年5月9日
    48
  • JsonPath使用

    JsonPath使用JSONPath-是xpath在json的应用。xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据。XPath是这些最强大的工具之一。如果可以使用xpath来解析json,以下的问题可以被解决: 1,数据不使用特殊的脚本,可以在客户端交互的发现并取并获取。2,客户机请求的JSON数据可以减少到服务器上的相关部分,这样可以最大限度地减少服务器响应的带宽使用…

    2022年6月18日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号