python爬虫批量爬取乐愚社区精美壁纸
文章目录
- 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爬虫批量爬取乐愚社区精美壁纸相关推荐
- Python爬虫 | 批量爬取今日头条街拍美图
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今日鸡汤浮云一别后,流水十年间. 专栏作者:霖he ...
- python爬虫——批量爬取百度图片
最近做项目,需要一些数据集,图片一张一张从网上下载太慢了,于是学了爬虫. 参考了大佬的文章:https://blog.csdn.net/qq_40774175/article/details/8127 ...
- Python爬虫——批量爬取微博图片(不使用cookie)
引言:刚开始我想要爬取微博的照片,但是发现网上大多数的blog都是需要一个cookie的东西,当时我很难得到,偶然翻到一个个人的技术博客: http://www.omegaxyz.com/2018/0 ...
- python爬取抖音评论_使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
# _*_ coding: utf-8 _*_ import requests import sys headers = {"User-Agent":"Mozilla ...
- python爬虫简单爬取爱思助手壁纸
# 网络安全法最高可获得刑法 print("正则爬取地址") # 访问网址的库 import urllib.request import re name = 1 for i in ...
- python爬虫批量下载“简谱”
python讨论qq群:996113038 导语: 上次发过一篇关于"python打造电子琴"的文章,从阅读量来看,我们公众号的粉丝里面还是有很多对音乐感兴趣的朋友的.于是,今天我 ...
- 新一配:perl循环调用python爬虫批量下载喜马拉雅音频
新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...
- python爬虫之爬取网页基础知识及环境配置概括
记:python爬虫是爬取网页数据.统计数据必备的知识体系,当我们想统计某个网页的部分数据时,就需要python爬虫进行网络数据的爬取,英文翻译为 spider 爬虫的核心 1.爬取网页:爬取整个网页 ...
- 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...
最新文章
- Hibernate配置(2)
- jquery option 动态 selected
- 赠书:响应式编程到底是什么?
- mac python3.8上怎么安装pygame 第三方库_Python3.8安装Pygame Python3.8安装Pygame教程步骤详解...
- 工作182:表格渲染
- 企业级程序 苏林加密系统内测发布 支持多种加密
- uva861 Little Bishops
- 《像计算机科学家一样思考Python(第2版)》——2.7 注释
- 利用VGA输出音频信号
- 好用的PDF编辑软件有哪些?这几款工具建议收藏
- 惠普服务器硬盘指示灯不亮或显示蓝色
- 40亿美金史上最大 ICO,EOS 疑云
- BPDU Guard, BPDU Filter, Root Guard, Loop Guard UDLD
- 胡适资助林语堂出国留学的故事
- 千纸鹤(小纸片)全套源码
- 窃 听 器--郭德纲相声
- Tensorflow2.0 Resnet18与cifar100
- 360浏览器下载文件成功但文件异常问题
- 分页功能的实现代码 与 分页查询
- CentOS7.6 安装配置Amber18/AmberTools18(GPU加速版)
热门文章
- 使用docker-compose一键部署开源博客wordpress
- 保单OCR识别技术介绍
- 使用illuminate/html
- python适用于_Python解码适用于我,但不适用于其他人
- 计算机专业湖北二本大学排名及分数线,2019-2020湖北二本大学排名及分数线(理科+文科)...
- OpenGL学习笔记(2)第一个程序——犹他茶壶(Teapot)
- ocp知识点:控制事务
- python路径中users标红报错解决
- 微信小程序用CSS设置背景颜色渐变
- java odata_OData的初步认识及使用