疲惫的生活里总要有些温柔梦想吧

目标URL:http://www.win4000.com/meinvtag4_1.html

爬取美桌网某个标签下的美女壁纸,点进详情页可以发现,里面是一组套图

一、网页分析

翻页查看 URL 变化规律:

http://www.win4000.com/meinvtag4_1.html
http://www.win4000.com/meinvtag4_2.html
http://www.win4000.com/meinvtag4_3.html
http://www.win4000.com/meinvtag4_4.html
http://www.win4000.com/meinvtag4_5.html

页面里看到的每张图片点击进去有详情页,里面是套图

详情页里套图URL变化规律:

http://www.win4000.com/meinv216987_1.html
http://www.win4000.com/meinv216987_2.html
http://www.win4000.com/meinv216987_3.html

在网页源代码中也可以直接找到数据:

图片名称  下载链接
性感美女肌肤雪白撩人写真图片
http://pic1.win4000.com/pic/8/e0/24b989d57c.jpg

二、爬虫基本思路

1. 获取5页的套图的URL

def get_taotu_url():for i in range(1, 6):url = f'http://www.win4000.com/meinvtag4_{i}.html'headers = {'User-Agent': choice(user_agent)}# 发送请求  获取响应rep = requests.get(url, headers=headers)# print(rep.status_code)    状态码  200# print(rep.text)html = etree.HTML(rep.text)taotu_url = html.xpath('//div[@class="tab_tj"]/div/div/ul/li/a/@href')# 过滤掉无效的urltaotu_url = [item for item in taotu_url if len(item) == 39]# 一个页面有24个图片print(taotu_url, len(taotu_url), sep='\n')

2. 进入套图详情页爬取图片
def get_img(url):headers = {'User-Agent': choice(user_agent)}# 发送请求  获取响应rep = requests.get(url, headers=headers)# 解析响应html = etree.HTML(rep.text)# 获取套图名称   最大页数name = html.xpath('//div[@class="ptitle"]/h1/text()')[0]os.mkdir(r'./女神套图/{}'.format(name))max_page = html.xpath('//div[@class="ptitle"]/em/text()')# 字符串替换  便于之后构造url请求url1 = url.replace('.html', '_{}.html')for i in range(1, int(max_page[0]) + 1):url2 = url1.format(i)sleep(randint(1, 3))reps = requests.get(url2, headers=headers)dom = etree.HTML(reps.text)src = dom.xpath('//div[@class="main-wrap"]/div[1]/a/img/@data-original')[0]file_name = name + f'第{i}张.jpg'img = requests.get(src, headers=headers).contentwith open(r'./女神套图/{}/{}'.format(name, file_name), 'wb') as f:f.write(img)print(f'成功下载图片:{file_name}')

3. 完整代码实现

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 7 19:15:04 2020
微信公众号: 凹凸数据
@File :spider.py
@Author :叶庭云
@CSDN :https://yetingyun.blog.csdn.net/
"""
import requests
from random import choice, randint
from lxml import etree
import os
from concurrent.futures import ThreadPoolExecutor
from time import sleep# 自己构造请求头池 用于切换
user_agent = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"]# 不存在文件夹 就创建
if not os.path.exists('女神套图'):os.mkdir('女神套图')# 获取5页的套图的URL
def get_taotu_url():taotu_urls = []for i in range(1, 6):url = f'http://www.win4000.com/meinvtag4_{i}.html'headers = {'User-Agent': choice(user_agent)}# 发送请求 获取响应rep = requests.get(url, headers=headers)# print(rep.status_code) 状态码 200# print(rep.text)html = etree.HTML(rep.text)taotu_url = html.xpath('//div[@class="tab_tj"]/div/div/ul/li/a/@href')# 过滤掉无效的urltaotu_url = [item for item in taotu_url if len(item) == 39]# 一个页面有24个图片# print(taotu_url, len(taotu_url), sep='\n')taotu_urls.extend(taotu_url)return taotu_urls# 进入套图详情页爬取图片
def get_img(url):headers = {'User-Agent': choice(user_agent)}# 发送请求 获取响应rep = requests.get(url, headers=headers)# 解析响应html = etree.HTML(rep.text)# 获取套图名称 最大页数name = html.xpath('//div[@class="ptitle"]/h1/text()')[0]os.mkdir(r'./女神套图/{}'.format(name))max_page = html.xpath('//div[@class="ptitle"]/em/text()')# 字符串替换 便于之后构造url请求url1 = url.replace('.html', '_{}.html')# 翻页爬取这组套图的图片for i in range(1, int(max_page[0]) + 1):# 构造urlurl2 = url1.format(i)# 休眠 sleep(randint(1, 3))# 发送请求 获取响应reps = requests.get(url2, headers=headers)# 解析响应dom = etree.HTML(reps.text)# 定位提取图片下载链接src = dom.xpath('//div[@class="main-wrap"]/div[1]/a/img/@data-original')[0]# 构造图片保存的名称file_name = name + f'第{i}张.jpg'# 请求下载图片 保存图片 输出提示信息img = requests.get(src, headers=headers).contentwith open(r'./女神套图/{}/{}'.format(name, file_name), 'wb') as f:f.write(img)print(f'成功下载图片:{file_name}')# 主函数调用 开多线程
def main():taotu_urls = get_taotu_url()with ThreadPoolExecutor(max_workers=4) as exector:exector.map(get_img, taotu_urls)print('=================== 图片全部下载成功啦!=====================')if __name__ == '__main__':main()

运行效果如下:

程序运行一会,图片就全部爬取下来保存在本地文件夹,5页的120组套图,美滋滋。

四、其他说明

  • 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

  • 通过本文爬虫,可以帮助你了解套图的爬取,如何通过字符串的拼接来构造URL请求。

  • 本文利用 Python 爬虫实现批量下载女神套图,实现过程中也会遇到一些问题,多思考和调试,最终解决问题,也能理解得更深刻。

【爬虫】爬取女神套图相关推荐

  1. 手把手教你Python爬取女神套图

    疲惫的生活里总要有些温柔梦想吧 目标URL:http://www.win4000.com/meinvtag4_1.html 爬取美桌网某个标签下的美女壁纸,点进详情页可以发现,里面是一组套图 一.网页 ...

  2. 福利来了!手把手教你Python爬取女神套图

    疲惫的生活里总要有些温柔梦想吧 目标URL:http://www.win4000.com/meinvtag4_1.html 爬取美桌网某个标签下的美女壁纸,点进详情页可以发现,里面是一组套图 一.网页 ...

  3. 福利!手把手教你Python爬取女神套图

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者:叶庭云 来源:凹凸数据 作者:叶庭云 CSDN ...

  4. 真香,50行Java代码爬取妹子套图!

    前言 当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留 ...

  5. 怎么把动态图从python弄下来_发一只我一直在用的爬虫——爬取“解闷”动态图的爬虫,绅士不妨留步^=^...

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 疾风.意破天晴 于 2018-5-27 13:56 编辑 因为GIF这种东西似乎从诞生到 ...

  6. 爬取爱套图网上的图片

    # coding = utf-8from bs4 import BeautifulSoup import requestsfor i in range(20):i = str(i)url = 'htt ...

  7. 测试爬虫 爬取百度贴吧 爬取百度搜图图片

    测试爬取百度贴吧图片 定义爬取百度斗图吧首页的每条贴子的URL的爬取规则对象 /*** 斗图吧贴子的url*/SpiderFunction<Set<String>> doutu ...

  8. 运用Python爬虫爬取一个美女网址,爬取美女图

    运用Python爬虫爬取一个美女网址,爬取美女图 要运用到的python技术: 导入库 1.request 发送请求,从服务器获取数据 2.BeautifulSoup 用来解析整个网页的源代码 imp ...

  9. 初始python爬虫-爬取彼岸图单张到全部图片

    初始python爬虫-爬取彼岸图单张到全部图片 1.单张图片爬取 2.一页图片 3.多页图片 彼岸图链接: https://pic.netbian.com/new/ 用到的库: import requ ...

最新文章

  1. Tomcat的安装和运行
  2. php 图片上传预览(转)
  3. vbs代码炫酷效果_Python|实现黑客帝国代码雨效果
  4. Tomcat映射虚拟路径到指定磁盘(eclipse)
  5. python从excel中读取数据
  6. 青苹果影视系统源码v1.3.20 多功能开源影视源码
  7. 用php做居中金字塔,[菜鸟学php] php版自定义函数实现金字塔
  8. python机器学习案例系列教程——模型评估总结
  9. java 打包 根目录_java打包
  10. python plot 时间_python – 在matplotlib中绘制时间与日期
  11. 数据库grant 授权
  12. Linux C++开发小结
  13. 免登陆Oracle下载jdk
  14. mid、mif文件转shapefile、geojson等格式的数据
  15. ultraiso虚拟光驱安装linux,ultra_UltraISO怎么添加虚拟光驱啊?
  16. Android TP驱动分析
  17. Windows无法启动 VMware Workstation server错误1068依赖服务或组无法启动
  18. 图像检索算法 TODO
  19. 微信小程序表格前后台分页
  20. Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)

热门文章

  1. 信创技术联盟网址多少要下载个麒麟wine微信
  2. 图片数据不够快来试试使用imgaug增强数据
  3. vaadin_Vaadin中的简单访问控制
  4. c1TrueDBGrid 常用属性
  5. java 查询的结果为 0e-8 和 0E-12
  6. 关于柱塞泵R9.8-9.8-9.8-9.8
  7. 电脑语言java,零基础学习电脑语言;Java学习路线!
  8. Spring Boot之OneToMany、ManyToOne示例分析
  9. 我的世界非正版跑酷服务器,《我的世界》无人能过的跑酷关卡!25关等你挑战!...
  10. 使用C#将方法传递为参数