python 爬取图集谷妹子图片,按自己喜好抓取一页图片,有兴趣二次开发 抓全站
Python 图片 自己 抓取 爬取 二次开发 一页 兴趣
2023-06-13 09:12:07 时间
大家好,又见面了,我是你们的朋友全栈君。
# -*- coding: utf-8 -*-
import requests, time, os
from lxml import etree
from urllib import request
name_url = {} # 创建一个字典
def sort():
req = requests.get('https://www.tujigu.com/') # 首页
req.encoding = 'utf-8' # 中文出现乱码,调整编码
req_xp = etree.HTML(req.text) # 装换为xp,text是为了变成字符串形式,不然会报错
text_list = req_xp.xpath('//*[@class="menu"]/li/a/text()|//*[@id="tag_ul"]/li/a/text()') # 读取分类名
href_list = req_xp.xpath('//*[@class="menu"]/li/a/@href|//*[@id="tag_ul"]/li/a/@href') # 获取网址
for href, text in zip(href_list, text_list):
name_url[text] = href # 已分类名做为key,网址作为值
return text_list # 返回分类名列表,好为后面打印分类名
def dow(url, name):
if not os.path.exists("图集谷"): # 检查并创建文件夹,强迫症~~~
os.mkdir('图集谷')
if not os.path.exists("图集谷/{}".format(name)): # 同上,创建分类
os.mkdir('图集谷/{}'.format(name))
atlas = requests.get(url) # get你选择的网址
atlas.encoding = 'utf-8' # 同上,乱码问题
atlas_xp = etree.HTML(atlas.text)
text_list = atlas_xp.xpath('//*[@class="biaoti"]/a/text()') # 获取图集名
href_list = atlas_xp.xpath('//*[@class="biaoti"]/a/@href')
for text, href in zip(text_list, href_list):
req = requests.get(href)
req.encoding = 'utf-8'
req_xp1 = etree.HTML(req.text)
src_list = req_xp1.xpath('//*[@class="content"]/img/@src')
num = 1 # 创建图片名,美观
# 下面是为了删除一些图集中包含了文件夹不能创建的符号
text = text.replace('\n', '').replace('/', '').replace('\\', '').replace(':', '').replace('*', '').replace('"',
'').replace(
'<', '').replace('>', '').replace('|', '').replace('?', '')
if not os.path.exists("图集谷/{}/{}".format(name, text)): # 检测此图集是否下载过
os.mkdir("图集谷/{}/{}".format(name, text))
for src in src_list:
request.urlretrieve(src, "图集谷/{}/{}/{}.jpg".format(name, text, num)) # 保存图片
num += 1
print('{}-------------成功下载'.format(text))
else:
print('{}--------------内容已下载'.format(text))
def get():
while 1:
text_list = sort() # 从首页获取分类信息和url
i = 1 # 序号
for text in text_list[2:-1]: # 从2到-1是为了去除没用的分类
print('%02d.{}'.format(text) % i) # 打印分类信息
i += 1
opt = input('输入您要爬取的内容(首页为默认)>>>>> ')
if not opt.isdigit(): # 判断输入内容
print('傻X输入中文懂么')
time.sleep(3)
continue
opt = int(opt)
if not 0 < opt < len(text_list) - 3: # 判断输入内容
print('输入范围错误')
time.sleep(3)
continue
opt += 1 # 以为删除了首页,所以+1才能正确选择分类
url = name_url[text_list[opt]] # 获取你选择的地址
name = text_list[opt] # 分类的名字,好创建一个文件夹放入
print('{}====开始爬取'.format(name))
dow(url, name) # 开始运行下载程序
input('爬取完成,按下回车重新开始')
if __name__ == '__main__':
get() # 开始运行主程序
安装好库,选择自己喜好,就可以了。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154733.html原文链接:https://javaforall.cn
相关文章
- python re.compile() 详解——Python正则表达式「建议收藏」
- Python ---- 算法入门(1)贪心算法解决部分背包问题
- python识别文字位置_如何利用Python识别图片中的文字
- python 遍历文件夹下所有图片
- python中bool()函数
- python 爬虫 通过搜索引擎搜索好看的图片进行多线程高效率爬取(解决href关联问题)
- Python和Java哪个就业前景好?
- 【说站】python解析照片拍摄时间进行图片整理
- python获取当前系统的日期_python怎么获取当前系统时间
- python判断文件后缀_Python 判断文件后缀是否被篡改
- python 正则表达式匹配数字或者小数点_五位小数正则表达式
- Python文件名后缀_python获取目录下所有文件的文件名
- python中copy.deepcopy_Python eval
- 1行Python代码,把PPT转成图片,python-office功能更新~
- 【测试开发】python系列教程:Python数据类型转换
- python-Python与MongoDB数据库-MongoDB数据库的基本知识
- python通过openpyxl生成Excel文件详解编程语言
- Python学习之路 (三)爬虫(二)详解编程语言
- Python中MongoDB使用详解编程语言
- 使用 Python 和 GNU Octave 绘制数据
- Linux下从系统卸载Python(linux下卸载python)
- python检测lvsrealserver状态
- Python中的生成器和yield详细介绍
- Python异常处理总结