python爬取正能量图片mm131(update)
python爬取图片(lsp篇)
文章目录
- 前言
- 一、需要用到什么?
- 二、作业模板
- 1.根据网址分析数据(所有爬虫程序都必须对网址进行分析,由于这是个lsp网址就不拿出来分析了)
- 2.套用模板
- 总结
前言
为了完成老师布置的作业,爬取青春有你2,借用了这个作业的模板爬图片,屡试不爽
一、需要用到什么?
python基础,软件方面根据个人习惯可以使用Anaconda一个集成的可以在浏览器中编程的软件,不需要再安装python包等等比较方便!
二、作业模板
1.根据网址分析数据(所有爬虫程序都必须对网址进行分析,由于这是个lsp网址就不拿出来分析了)
2.套用模板
第一步,从网址中取得你需要的那部分html
import json
import re
import requests
from bs4 import BeautifulSoup
import sys
import os
import datetime
today = datetime.date.today().strftime('%Y%m%d')
def crawl_wiki_data(n):"""爬取html"""headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}url='https://m.mm131.net/more.php?page='n=int(n)+1for page in range(1,n):url=url+str(page)print(url)response = requests.get(url,headers=headers)print(response.status_code)soup=BeautifulSoup(response.content,'lxml')content=soup.find('body')parse_wiki_data(content)url='https://m.mm131.net/more.php?page='
第二步,从那部分html中取得想要的目录名,以及图集的链接地址
def parse_wiki_data(content):"""生成json文件到C:/Users/19509/Desktop/python目录下"""girls=[]bs=BeautifulSoup(str(content),'lxml')all_article=bs.find_all('article')for h2_title in all_article:girl={}#图集girl["name"]=h2_title.find('a',class_="post-title-link").text#链接girl["link"]="https://m.mm131.net"+h2_title.find('a',class_="post-title-link").get('href')girls.append(girl)json_data=json.loads(str(girls).replace("\'","\""))with open('C:/Users/19509/Desktop/python/girls/'+today+'.json','w',encoding='UTF-8') as f:json.dump(json_data,f,ensure_ascii=False)crawl_pic_urls()
第三步,从json文件中,根据图集链接进一步爬取每张图片的链接并,将每张图片的链接作存在数组中,用来传递给下一个函数来下载图片
def crawl_pic_urls():"""爬取每个相册的图片链接"""with open('C:/Users/19509/Desktop/python/girls/'+today+'.json','r',encoding='UTF-8') as file:json_array = json.loads(file.read())headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' }for girl in json_array:name = girl['name']link = girl['link']pic_urls=[]#爬取图集response = requests.get(link,headers = headers)bs = BeautifulSoup(response.content,'lxml')#拉取页数pic=bs.find('div',class_="paging").find('span',class_="rw").textpic=re.findall("\d+",pic)pic_number=int(pic[1])+1#拉取图片链接pic_url=bs.find('div',class_="post-content single-post-content").find('img').get('src')pic_urls.append(pic_url)list=[]for x in range(len(pic_url)):list.append(pic_url[x])for m in range(2,pic_number):all_pic_urls=''list[33]=str(m)for k in range(len(list)):all_pic_urls+=list[k]pic_urls.append(all_pic_urls)headers = {"Referer": link,"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.9 SLBChan/25"}down_pic(name, pic_urls,headers)
第四步下载图片并保存
def down_pic(name,pic_urls,headers):"""下载图片"""path = 'C:/Users/19509/Desktop/python/girls/'+'pic/'+name+'/'if not os.path.exists(path):os.makedirs(path)for i,pic_url in enumerate(pic_urls):try:pic = requests.get(pic_url,headers=headers)string = str(i+1)+'.jpg'with open(path+string,'wb') as f:f.write(pic.content)print('成功下载第%s张图片:%s' %(str(i+1),str(pic_url)))except Exception as e:print('下载第%s张图片时失败:%s' %(str(i+1),str(pic_url)))print(e)continue
最后打印下载路径的绝对路径,同时写主函数运行所有函数
def show_pic_path(path):"""遍历所爬取的每张图片,并打印所有图片的绝对路径"""pic_num=0for (dirpath,dirnames,filenames) in os.walk(path):for filename in filenames:pic_num+=1print("第%d张照片: %s" %(pic_num,os.path.join(dirpath,filename)))print("共爬取lsp图%d张" % pic_num)
if __name__ == '__main__':n=input('要几页:')html = crawl_wiki_data(n)#打印所爬取的选手图片路径show_pic_path('C:/Users/19509/Desktop/python/girls/pic')print("所有信息爬取完成!谢谢")
注意事项:’C:/Users/19509/Desktop/python/girls‘这个是我的目录,不是你的目录,你必须创建属于你的目录和相应的girls文件夹
总结
这篇文章涉及到挺多小细节的,比如下载图片时的headers跟前面的headers不一样,以及拉取图集里面图的张数时用到了正则表达式,存在问题:图集的名字不能改成中文,不知道有没有大佬会的!!
python爬取正能量图片mm131(update)相关推荐
- python爬取贴吧图片_Python爬取贴吧多页图片
Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了. #coding:utf-8 import urllib import urllib2 import re import os ...
- Python爬取自然风景图片代码
Python爬取自然风景图片代码 \qquad 需要用到python的etree库和requests库,需要提前下载安装. from lxml import etree import requests ...
- python爬取网站的图片
python爬取网站的图片 本次爬取图片所需要用到的库:Requests库,BeautifulSoup库,正则表达式,os库. 思路:先爬一张图片,再爬一个网站的图片 先爬一张图片: 首先要得到这张图 ...
- python爬取网站源代码+图片
python爬取网站源代码+图片 需求分析 基础知识 正则表达式 python网络请求 文件读写 实现 基本思路 具体实现 结果 总结 需求分析 大部分有志青年都想建立属于自己的个人网站,从零开始设计 ...
- python 爬取5566图库图片
python 爬取5566图库图片 1 import requests 2 import random 3 import re 4 import time 5 import os 6 from bs4 ...
- python爬取动态网页图片
爬取某知名网站图片(爬取动态网页) python爬取动态网页图片 python爬取动态网页图片 环境: python3.pycharm 库: requests.urllib.json 思路: 1.分析 ...
- python爬取明星百度图片并存入本地文件夹
python爬取明星百度图片并存入本地文件夹 想要一个明星图片的时候,发现图片量过大,一张张保存太累,不太现实 这时候就可以用到爬虫,批量爬取图片 现在又出现一个问题,当发现一个明星爬完后,再爬取下一 ...
- Python爬取百度壁纸图片
Python爬取百度壁纸图片 #! /usr/bin/python -- coding: utf-8 -- @Author : declan @Time : 2020/05/31 16:29 @Fil ...
- Python爬取小姐姐图片
使用Python爬取小姐姐图片 首先上网站链接 唯美女生 爬取图片主要分为一下几步: 1.打开一个你喜欢的小姐姐的网站 E.g xiaojiejie web 2.下载并安装python环境 pytho ...
最新文章
- jquery 常用方法 delegate() siblings() closest() indexOf() substring()
- arrayfunction[LeetCode]Convert Sorted Array to Binary Search Tree
- ARM64的启动过程之(三):为打开MMU而进行的CPU初始化
- js时间搓化为今天明天_秋冬国产搓背神器!360°无死角,让你搓背不求人,太舒服了...
- Java String indexOf(int ch)方法与示例
- python连接数据库mysql错误1045、手动登录可以_登录mysql错误1045解决方法
- Jmeter系列之no-gui模式
- android activity传值到dialog,android 自定义AlertDialog 与Activity相互传递数据
- 博文视点大讲堂25期——2天玩转单反相机
- nginx 代理springmvc到二级目录_详解Nginx从入门到实践
- 几句话就能让你明白:热备份路由选择协议(HSRP)
- 【DCVRP】基于matlab遗传和粒子群算法求解带容量的车辆路径规划问题【含Matlab源码 1034期】
- 【持续更新】Java序列化对象释疑
- VS编译运行时提示:应用程序并行配置不正确,无法启动程序
- 关于ps cs6的滤镜 (抽出)
- DS1302时钟芯片的使用
- 腾讯入股艺龙,在线旅游市场引发关注
- Two‘s Complement(二进制补码)
- CANoe CAPL文件操作目录合集
- 史上最详细的HashMap红黑树解析