效果:

什么?看不清?

准备发车

模块下载:

pip install requests
pip install re

第一部分:定义要爬取的标签和正在爬取的页数

def UserUrl(theme,pagenum):url = "https://tuchong.com/rest/tags/%(theme)s/posts?page=%(pagenum)s&count=20&order=weekly" % {'theme': urllib.parse.quote(theme), 'pagenum': pagenum}#print(url)return url

第二部分:防止反扒

def GetHtmltext(url):head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}try:r = requests.get(url, headers=head, timeout=30)r.raise_for_status()  #如果返回的状态码不是200,就到except中return rexcept:pass

第三部分:定义获取一个pagenum页面中的所有图集的URL链接的函数

def PictureFatherUrl(user_url):try:raw_data = GetHtmltext(user_url)j_raw_data = json.loads(raw_data.text)   #将获取的网页转化为Python数据结构# print(j_raw_data)father_url = []                    #将每个图集的url定义为father_url的一个列表for i in j_raw_data['postList']:   #解析出的j_raw_data是一个多重字典,在这里先将postList字典的内容取出来father_url.append(i['url'])     #然后再取出键为“url”的值return father_urlexcept:return

第四部分:定义获取一个图集中所有图片的url链接

def PictureUrl(url):try:html = GetHtmltext(url)#利用正则表达式来匹配url_list = list(re.findall('<img id="image\d+" class="multi-photo-image" src="([a-zA-z]+://[^\s]*)" alt="">', html.text))return url_listexcept:

第五部分:

#定义一个图集中所有图片的下载
def Download(url):url_list = PictureUrl(url)for i in url_list:r = GetHtmltext(i)file_name = os.path.join(save_path, i.split('/')[-1])with open(file_name, 'wb') as f:f.write(r.content)f.close()time.sleep(random.uniform(0.3, 0.5))  #为防止被反爬,在这里random了0.3-0.5的数,然后在下载一张图片后,sleep一下print('下载成功保存至 %s' % file_name)

主函数:

if __name__ == '__main__':theme = input("你选择的标签(如果你不知道有什么标签,去https://tuchong.com/explore/去看看有什么标签吧,输入不存在的标签无法下载哦):")pagenum_all = int(input("你要爬取的页数(不要太贪心哦,数字太大会被封IP的):"))save_path = os.path.join(theme)m = 0if not os.path.exists(save_path):os.makedirs(save_path)print("我知道你没有创建保存路径,我把文件存在和此脚本同样的路径下的叫做“ %s ”的文件夹下面了" % theme)for i in range(1, pagenum_all+1):n = 0m += 1print("正在下载第%d页,一共%d页" % (m, pagenum_all))user_url = UserUrl(theme, i)father_url = PictureFatherUrl(user_url)for j in father_url:n += 1print("正在下载第%d套图,一共%d套图" % (n, len(father_url)))Download(j)time.sleep(random.randint(6, 10))  #同样为了反爬,也random了6-10之间的数,更真实的模拟人的操作

完整源代码:

#coding=gbk
"""
学习群:970353786
作者:川川
时间:2021/8/11
"""
import os
import re
import json
import requests
import time
import urllib.parse
import random#定义要爬取的标签和正在爬取的页数
def UserUrl(theme,pagenum):url = "https://tuchong.com/rest/tags/%(theme)s/posts?page=%(pagenum)s&count=20&order=weekly" % {'theme': urllib.parse.quote(theme), 'pagenum': pagenum}#print(url)return url#利用requests使用get方法请求url,使用User-Agent是为了防止被反爬,这样使得我们的爬取行为更像人的行为
def GetHtmltext(url):head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}try:r = requests.get(url, headers=head, timeout=30)r.raise_for_status()  #如果返回的状态码不是200,就到except中return rexcept:pass#定义获取一个pagenum页面中的所有图集的URL链接的函数
def PictureFatherUrl(user_url):try:raw_data = GetHtmltext(user_url)j_raw_data = json.loads(raw_data.text)   #将获取的网页转化为Python数据结构# print(j_raw_data)father_url = []                    #将每个图集的url定义为father_url的一个列表for i in j_raw_data['postList']:   #解析出的j_raw_data是一个多重字典,在这里先将postList字典的内容取出来father_url.append(i['url'])     #然后再取出键为“url”的值return father_urlexcept:return#定义获取一个图集中所有图片的url链接
def PictureUrl(url):try:html = GetHtmltext(url)#利用正则表达式来匹配url_list = list(re.findall('<img id="image\d+" class="multi-photo-image" src="([a-zA-z]+://[^\s]*)" alt="">', html.text))return url_listexcept:pass#定义一个图集中所有图片的下载
def Download(url):url_list = PictureUrl(url)for i in url_list:r = GetHtmltext(i)file_name = os.path.join(save_path, i.split('/')[-1])with open(file_name, 'wb') as f:f.write(r.content)f.close()time.sleep(random.uniform(0.3, 0.5))  #为防止被反爬,在这里random了0.3-0.5的数,然后在下载一张图片后,sleep一下print('下载成功保存至 %s' % file_name)#定义主函数
if __name__ == '__main__':theme = input("你选择的标签(如果你不知道有什么标签,去https://tuchong.com/explore/去看看有什么标签吧,输入不存在的标签无法下载哦):")pagenum_all = int(input("你要爬取的页数(不要太贪心哦,数字太大会被封IP的):"))save_path = os.path.join(theme)m = 0if not os.path.exists(save_path):os.makedirs(save_path)print("我知道你没有创建保存路径,我把文件存在和此脚本同样的路径下的叫做“ %s ”的文件夹下面了" % theme)for i in range(1, pagenum_all+1):n = 0m += 1print("正在下载第%d页,一共%d页" % (m, pagenum_all))user_url = UserUrl(theme, i)father_url = PictureFatherUrl(user_url)for j in father_url:n += 1print("正在下载第%d套图,一共%d套图" % (n, len(father_url)))Download(j)time.sleep(random.randint(6, 10))  #同样为了反爬,也random了6-10之间的数,更真实的模拟人的操作


当然,难道我的心只有小姐姐私房照?NONONO!你只要输入该网任意一个标签的都可给下载下来。

喜欢就点个赞吧,yeah!!最后贴上我的交流qun:970353786,欢迎各位小白大佬加入这个万能编程之家。

爬取某网几千张小姐姐私房照,准备好纸,别流鼻血,速速收藏相关推荐

  1. 【Python】多线程爬取某站高颜值小姐姐照片(共1.62GB)

    文章目录 写在前面 目标网站 依赖模块 爬虫思路 完整代码 爬虫结果 单图预览 多图预览 引用参考 写在前面 本文使用Python编写爬虫脚本,实现多线程爬取唯美女生网站高颜值小姐姐的所有照片. 目标 ...

  2. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  3. Python网络爬虫实战:世纪佳缘爬取近6万条小姐姐数据后发现惊天秘密

    翻着安静到死寂的聊天列表,我忽然惊醒,不行,我们不能这样下去,光羡慕别人有什么用,我们要行动起来,去找自己的幸福!!! 我也想"谈不分手的恋爱" !!!内牛满面!!! 注册登陆一气 ...

  4. denied 登陆后access_Python网络爬虫实战:世纪佳缘爬取近6万条小姐姐数据后发现惊天秘密...

    翻着安静到死寂的聊天列表,我忽然惊醒,不行,我们不能这样下去,光羡慕别人有什么用,我们要行动起来,去找自己的幸福!!! 我也想"谈不分手的恋爱" !!!内牛满面!!! 注册登陆一气 ...

  5. python爬取无水印抖音小姐姐视频(2018最新,含Pyqt客户端)

    各位小伙伴,之前一段时间迷上了抖音小姐姐视频,但是下载的视频都有水印,于是自己用Python 写了个爬取小姐姐视频的工具,大家可以直接拷贝到自己编译器上运行.此外,我还利用pyqt5写了个操作界面,这 ...

  6. Python爬虫实战:世纪佳缘爬取近6万条小姐姐数据!脱单的有望!

    马上又是一年双十一了,不知道从什么时候开始,双十一从"光棍节"变成了"双十一购物狂欢节",最后一个属于单身狗的节日也成功被攻陷,成为了情侣们送礼物秀恩爱的节日. ...

  7. 2020ChinaJoy全是小姐姐,程序员小伙当场流鼻血

    看到这篇水文的时候你应该知道了,你们的敖丙这周末又偷懒没写技术文和拍视频,偷偷跑去上海浪了两天,不过技术文我工作日还是得熬夜搞一篇出来,女读者的面试视频剪辑进度10%了,这周应该可以结束. 再说你们以 ...

  8. python爬取知乎上的小姐姐

    知乎上的东西质量都很好,有些问题下会有很多很好的回答,其中就有些关于图片的. 比如: 你见过最漂亮的女生长什么样? 平常人可以漂亮到什么程度? 有没有第一次见就让人震惊的手机壁纸? 有哪些图片适合做电 ...

  9. 爬取某直播网站首页小姐姐的照骗

    #使用正则表达式取出网页中图片url并下载图片 import time import re import requests import multiprocessing import osdef do ...

最新文章

  1. android IntentService生命周期问题
  2. linux中文件的编辑 写入 读取 光标的位置 以及相应的补充
  3. 【AI白身境】深度学习中的数据可视化
  4. 对于新手来说,Python 中有哪些难以理解的概念?我似乎明白了
  5. dos中特殊符号命令的应用
  6. postgresql 高可用 etcd + patroni 之二 patroni
  7. 事务的状态(状态模式)
  8. [vim]在vim中格式化xml
  9. 查找当前地形位置上的贴图信息
  10. 电钻有刷好还是无刷好_高中物理好的来看看,永磁同步直流电机是怎样实现无刷驱动的?...
  11. 详解如何在ubuntu上安装node.js
  12. 机器学习入门:线性回归及梯度下降(附matlab代码)
  13. AppDelegate文件下各方法的用法:(应用程序挂起、复原与终止)
  14. 人工智能与大数据就业前景_大数据专业和人工智能专业哪个前景更好
  15. PCL-ICP(IterativeClosestPoint)源码解析
  16. ffplay flv mp4 转_C#调用FFmpeg将flv视频格式转换成mp4格式
  17. RD client、远程桌面、smb等远程相关的使用与注意
  18. 繁体中文和简体中文编码
  19. SpringCloud学习笔记3:Spring Cloud Netflix 组件(五大神兽)
  20. android usb attached,Android USB主机模式服务 – 基于USB_DEVICE_ATTACHED启动

热门文章

  1. 读取数据库并将其中英文内容翻译成中文的过程
  2. SSM-山东省职称申报评审管理系统
  3. ACM-动态规划21-三角形最长路径问题
  4. 火柴棒搭成的几何世界
  5. 更改家用WiFi密码和名称
  6. 【oracle11g,12】归档日志和归档
  7. 常用的bug管理工具--推荐『禅道bug管理工具』
  8. HandsFree——OpenRE库学习(二)
  9. 颜色转换,float -DWORD
  10. iOS 进阶必读 - 收藏集 - 掘金