文章目录

  • python爬虫简介
  • 目标网页介绍
  • 网页以及网址的分析
  • 具体的python实现
  • 全部的代码

python爬虫简介

爬虫就其本质而言就是程序模拟浏览器访问网页的各种操作,其中网址的访问、图片、文字、音频的筛选下载等操作既是基础又是爬虫的灵魂所在,再此基础上的灵活运用,例如结合具体的要求如并发,分布式,大数据处理等等不断丰富了爬虫的内涵,使其逐渐分离成为一个独立的学科。

目标网页介绍

乐愚社区作为一个宅男基地,精选的美图可以说是十分符合宅男的口味,每页的推荐量少却是高质量,而正因为美图零散的分布在各个页面,手动保存显得十分繁杂,此时爬虫的功效就凸显出来了。

网页以及网址的分析

乐愚社区主要是web框架封装的app应用,没有专门适应浏览器的网页,所以浏览器打开UI依旧是app框架,其中美图版块进入地址为:https://bbs.leyuz.net/f/meitu,以目录形式展示每个图集,具体图片在点击目录项后的详情页中。目录共有465页(我原以为目录的页数是根据后台数据自动更新的没想到在js代码中写死了,汗!)

尝试着点击第二页,第三页,通过比较寻找url从的规律,发现从第二页开始的url满足规律为:
红色部分为各自的页面数,按着这样思路反推,验证https://bbs.leyuz.net/f/meitu?pn=1&od=0同样可以访问第一页。而每个目录项对应的href就是详情页的相对地址,最后具体页面直接就是存放着图片的地址。如此分析下来爬虫的工作就已经完成了一半了。

具体的python实现

首先获取脚本中规定的总页数的值count(以防后端心血来潮更改数字)

    url = 'https://bbs.leyuz.net/f/meitu'htmlcode = requests.get(url)kk = re.compile('count: ([^,]*),')#找到网页总页数list= kk.findall(htmlcode.text)pagetotalnum = int(list[0])

然后就可以一页页的爬取详情页的相对URL,存储在detail中然后下载。

    for i in range(pagetotalnum):url = 'https://bbs.leyuz.net/f/meitu?pn='+str(i+1)+'&od=0'htmlcode = requests.get(url)soup = BeautifulSoup(htmlcode.text,'lxml')data = soup.select("table td a[class='tag-title']")details = []for item in data:details.append(item.get('href'))downloadpics(details)

具体一个详情页的下载代码,会在程序所在目录下生成一个download总文件夹,每个详情页的图片以子文件夹形式存储其中,子文件夹命名为其对应页面的相对地址,批量图片命名采用随机字符和当前时间相结合方式。

def download(pic_url,dir_name):pic_name = ''.join(random.sample(string.ascii_letters+string.digits,8))+'_'+str(int(time.time()))#随机生成图片名dir_str  = os.path.split(os.getcwd())      #获取当前路径path = dir_str[0] +'\\download\\'+dir_name[-6:] #生成保存图片集的文件夹if os.path.exists(path)==False:os.makedirs(path)else:passurlretrieve(pic_url,path+'\\'+pic_name+'.jpg')#图片下载

结果:

全部的代码

import requests
import re
import os
import random
import string
import time
from urllib.request import urlretrieve
from bs4 import BeautifulSoupdef download(pic_url,dir_name):pic_name = ''.join(random.sample(string.ascii_letters+string.digits,8))+'_'+str(int(time.time()))#随机生成图片名dir_str  = os.path.split(os.getcwd())      #获取当前路径path = dir_str[0] +'\\download\\'+dir_name[-6:] #生成保存图片集的文件夹if os.path.exists(path)==False:os.makedirs(path)else:passurlretrieve(pic_url,path+'\\'+pic_name+'.jpg')#图片下载def downloadpics(pics_urls):#图集下载for item in pics_urls:pics_url = 'https://bbs.leyuz.net'+itemsoup = BeautifulSoup(requests.get(pics_url).text,'lxml')imgs = soup.select('a[class="weui-updown"] img')for i in imgs:src = i.get('data-src')download(src,item)def main():url = 'https://bbs.leyuz.net/f/meitu'htmlcode = requests.get(url)kk = re.compile('count: ([^,]*),')#找到网页总页数list= kk.findall(htmlcode.text)pagetotalnum = int(list[0])for i in range(pagetotalnum):url = 'https://bbs.leyuz.net/f/meitu?pn='+str(i+1)+'&od=0'htmlcode = requests.get(url)soup = BeautifulSoup(htmlcode.text,'lxml')data = soup.select("table td a[class='tag-title']")details = []for item in data:details.append(item.get('href'))downloadpics(details)if __name__ == '__main__':main()

python爬虫批量爬取乐愚社区精美壁纸相关推荐

  1. Python爬虫 | 批量爬取今日头条街拍美图

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今日鸡汤浮云一别后,流水十年间. 专栏作者:霖he ...

  2. python爬虫——批量爬取百度图片

    最近做项目,需要一些数据集,图片一张一张从网上下载太慢了,于是学了爬虫. 参考了大佬的文章:https://blog.csdn.net/qq_40774175/article/details/8127 ...

  3. Python爬虫——批量爬取微博图片(不使用cookie)

    引言:刚开始我想要爬取微博的照片,但是发现网上大多数的blog都是需要一个cookie的东西,当时我很难得到,偶然翻到一个个人的技术博客: http://www.omegaxyz.com/2018/0 ...

  4. python爬取抖音评论_使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    # _*_ coding: utf-8 _*_ import   requests import sys headers = {"User-Agent":"Mozilla ...

  5. python爬虫简单爬取爱思助手壁纸

    # 网络安全法最高可获得刑法 print("正则爬取地址") # 访问网址的库 import urllib.request import re name = 1 for i in ...

  6. python爬虫批量下载“简谱”

    python讨论qq群:996113038 导语: 上次发过一篇关于"python打造电子琴"的文章,从阅读量来看,我们公众号的粉丝里面还是有很多对音乐感兴趣的朋友的.于是,今天我 ...

  7. 新一配:perl循环调用python爬虫批量下载喜马拉雅音频

    新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...

  8. python爬虫之爬取网页基础知识及环境配置概括

    记:python爬虫是爬取网页数据.统计数据必备的知识体系,当我们想统计某个网页的部分数据时,就需要python爬虫进行网络数据的爬取,英文翻译为 spider 爬虫的核心 1.爬取网页:爬取整个网页 ...

  9. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

最新文章

  1. Hibernate配置(2)
  2. jquery option 动态 selected
  3. 赠书:响应式编程到底是什么?
  4. mac python3.8上怎么安装pygame 第三方库_Python3.8安装Pygame Python3.8安装Pygame教程步骤详解...
  5. 工作182:表格渲染
  6. 企业级程序 苏林加密系统内测发布 支持多种加密
  7. uva861 Little Bishops
  8. 《像计算机科学家一样思考Python(第2版)》——2.7 注释
  9. 利用VGA输出音频信号
  10. 好用的PDF编辑软件有哪些?这几款工具建议收藏
  11. 惠普服务器硬盘指示灯不亮或显示蓝色
  12. 40亿美金史上最大 ICO,EOS 疑云
  13. BPDU Guard, BPDU Filter, Root Guard, Loop Guard UDLD
  14. 胡适资助林语堂出国留学的故事
  15. 千纸鹤(小纸片)全套源码
  16. 窃 听 器--郭德纲相声
  17. Tensorflow2.0 Resnet18与cifar100
  18. 360浏览器下载文件成功但文件异常问题
  19. 分页功能的实现代码 与 分页查询
  20. CentOS7.6 安装配置Amber18/AmberTools18(GPU加速版)

热门文章

  1. 使用docker-compose一键部署开源博客wordpress
  2. 保单OCR识别技术介绍
  3. 使用illuminate/html
  4. python适用于_Python解码适用于我,但不适用于其他人
  5. 计算机专业湖北二本大学排名及分数线,2019-2020湖北二本大学排名及分数线(理科+文科)...
  6. OpenGL学习笔记(2)第一个程序——犹他茶壶(Teapot)
  7. ocp知识点:控制事务
  8. python路径中users标红报错解决
  9. 微信小程序用CSS设置背景颜色渐变
  10. java odata_OData的初步认识及使用