目的:根据输入的导航条名 获取对应的图片并分类保存到本地

首先导入所需要的模块,如果提示报错,显示未安装 就到cmd中使用pip 安装就可以了

import requests,os,shutil
import re
import time
from fake_useragent import UserAgent  #随机一个User-Agent
from bs4 import BeautifulSoup
from urllib.request import urlretrieve

最近在练习class 的使用方法所以这次就使用了类来编写 先上代码 解析在后

"""根据输入的类别,获取www.169we.com中的图片"""# coding:utf-8
import requests,os,shutil
import re
import time
from fake_useragent import UserAgent #随机一个User-Agent
from bs4 import BeautifulSoup
from urllib.request import urlretrieve# base_url = "http://www.169we.com/diannaobizhi/list_7_1.html"class Pic169Spider(object):def __init__(self,category):self.category = categoryself.base_url = "http://www.169we.com/{}/".format(self.category)self.headers = {"User-Agent":UserAgent().random,"Host":"www.169we.com",}self.img_headers = {"User-Agent": UserAgent().random,"Host": "724.169pp.net",}self.dic = {"diannaobizhi":"7","shoujibizhi":"6","wangyouzipai":"2","gaogensiwa":"3","xiyangmeinv":"4","guoneimeinv":"5","xingganmeinv":"1"}def getIndexPage(self,url):"""获取图片分类的总页数"""response = requests.get(url,headers=self.headers)soup = BeautifulSoup(response.text,"lxml")page_all = soup.select('body  div.page  ul li a')return page_all[-3].get_text()def getPage(self, url):"""获取图片的总页数"""response = requests.get(url, headers=self.headers)soup = BeautifulSoup(response.text, "lxml")page_all = soup.select('body div ul.pagelist li a')return page_all[-2].get_text()def getIndexImgHref(self,url):response = requests.get(url,headers=self.headers)response.encoding="gbk"data = re.findall(r'<li><a href="(.*?)" class="pic".*?>.*?<p>(.*?)</p>',response.text,re.S)return datadef getImgUrl(self,url,dirname,index):"""获取图片的src"""if not os.path.exists(self.category + "/" +dirname):os.makedirs(self.category + "/" +dirname)response = requests.get(url, headers=self.headers)# response.encoding = "gbk"img_urls = re.findall(r'<p align="center">.*?<img src="(.*?)".*?</p>',response.text,re.S)for img_url in img_urls:self.saveImg(img_url,dirname,index)index+=1def saveImg(self,img_url,dirname,index):"""保存图片到本地"""result = requests.get(img_url,headers=self.img_headers)with open(self.category + "/" + dirname +"/"+ str(index) + ".jpg", "wb") as f:f.write(result.content)# time.sleep(1)def main(self):"""主函数"""if not os.path.exists(self.category):os.makedirs(self.category)pages = int(self.getIndexPage(self.base_url))for page in range(1,pages+1):print(page)num = self.dic[self.category]url = "http://www.169we.com/{}/list_{}_{}.html".format(self.category,num,page)for data in self.getIndexImgHref(url):old_url = data[0]pattern = re.compile(r'<.*?>',re.S)dirname = re.sub(pattern,'',data[1])for i in range(1,int(self.getPage(old_url))+1):if i == 1:new_url = old_urlelse:lista = old_url.split(".")lista[-2] = lista[-2] + "_{}".format(i)new_url = ".".join(lista)self.getImgUrl(new_url,dirname,i)class SingleUrl(object):def __init__(self):self.headers ={"User-Agent":UserAgent().random}self.total_page = 1def spider(self,url):self.getPage(url)dirname = url.split('/')[-1].split('.')[0]if os.path.exists(dirname):shutil.rmtree(dirname)os.mkdir(dirname)os.chdir(dirname)self.getImgUrl(url)for i in range(2,self.total_page+1):lista = url.split(".")lista[-2] = lista[-2] + "_{}".format(i)new_url = ".".join(lista)self.getImgUrl(new_url)def getPage(self, url):response = requests.get(url, headers=self.headers)response.encoding="gbk"self.total_page = int(re.findall(r'.*?共(.*?)页',response.text,re.S)[0])def getImgUrl(self,url):response = requests.get(url, headers=self.headers)# response.encoding = "gbk"img_urls = re.findall(r'<p align="center">.*?<img src="(.*?)".*?</p>', response.text, re.S)for img_url in img_urls:urlretrieve(img_url,img_url.split('/')[-1])def all_img():msg = """提示信息:diannaobizhi--——>电脑壁纸shoujibizhi--——>手机壁纸wangyouzipai--——>网友自拍gaogensiwa--——>高跟丝袜xiyangmeinv--——>西洋美女guoneimeinv--——>国内美女xingganmeinv--——>性感美女"""print(msg)category = input("请输入你要获取的类别名:")diannaobizhi = Pic169Spider(category)diannaobizhi.main()def single_url_img():url = input("请将图片链接粘贴此处:")single = SingleUrl()single.spider(url)if __name__ == "__main__":all_img()#single_url_img()

先介绍Pic169Spider类中的方法,

该方法为Pic169Spider类中的对象属性

该方法获取总页数如下图所示

该方法获取图片链接中的总页数

获取分类的链接

比如:从http://www.169we.com/diannaobizhi/list_7_2.html获取到http://www.169we.com/diannaobizhi/2017/0709/39113.html

获取单个图片的链接,用此链接保存到本地

根据图片链接保存图片

运行程序会执行该方法,根据提示输入就可以爬取了

比如想爬取电脑壁纸 在控制台输入 diannaobizhi  按下回车键就可以了

 这个类是用来获取单个url的,比如我只想获取http://www.169we.com/diannaobizhi/2017/0630/38997.html

的图片,那么只需要调用single_url_img()函数,将该url传进去就可以了

个人文采不行,语言表达能力较弱,该代码不完善,待改进

python学习笔记 之爬取图片相关推荐

  1. Python学习笔记:爬取网页图片

    Python学习笔记:爬取网页图片 上次我们利用requests与BeautifulSoup爬取了豆瓣<下町火箭>短评,这次我们来学习爬取网页图片. 比如想爬取下面这张网页的所有图片.网址 ...

  2. Python学习笔记,爬取笔趣阁小说

    学习了基础的语法,然后网上看到有人分享利用python爬取小说,自己拷贝了代码尝试了一下. 1. 环境准备 安装 BeautifulSoup4 和 lxml & C:/Python39/pyt ...

  3. Python学习笔记之爬取网页保存到本地文件

     爬虫的操作步骤: 爬虫三步走 爬虫第一步:使用requests获得数据: (request库需要提前安装,通过pip方式,参考之前的博文) 1.导入requests 2.使用requests.get ...

  4. python学习笔记爬虫——爬取智联招聘信息

    目的:自己输入指定地方,指定职业,起始页数,程序会自动打印页面的所有信息. 实现过程:这次程序的代码跟以往的都不一样,这次也是我第一次使用面向对象式编程,并且并不是分析网页代码,分析json字符串得到 ...

  5. python学习笔记 存储爬到的数据

    一.csv文件写入与读取 import csv #引用csv模块. csv_file = open('demo.csv','w',newline='',encoding='utf-8') #创建csv ...

  6. python 异步加载_Python学习笔记4——爬取异步加载数据

    一.什么是异步加载? 在之前的学习笔记中,爬取的网页是需要手动翻页的网址,但是一些网站是通过自动加载翻页的,如knewone网页.浏览knewone的官网就能发现,当下拉到网页最下端时,网站会自动加载 ...

  7. 零基础学Python学习笔记

    Python学习笔记 代码下载地址 链接:https://pan.baidu.com/s/1yGnpfq4ZHeKpt4V0J_PTSg 提取码:hmzs 1. Python 基础语法 1.1 基本数 ...

  8. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  9. PYTHON学习笔记之(一)2020.08

    PYTHON学习笔记之(一)2020.08 Python基础 数据类型 常见的列表.字典,以及元组.集合. 1 列表 list 1.1 列表转换字符串 stu = ['王一', '李二', '张三'] ...

最新文章

  1. 使用lsof恢复进程打开的误删除文件
  2. Spring @Async注解
  3. 《高级软件测试》实践作业4学习记录12月25日
  4. 结对-贪吃蛇游戏-开发环境搭建过程
  5. ios系统python编译器_MacBook如何安装Python编译器-百度经验
  6. 杂记-字符串的字节长度
  7. c#winform演练 ktv项目 实现上一曲和下一曲的播放功能
  8. springmvc为什么不能拦截jsp页面?
  9. python求50的阶乘_python如何求阶乘
  10. mysql:多表查询方式
  11. 2022新版X站模板 二开苹果cms视频网站源码可封装app(学习教程)
  12. 【Jenkins】windows系统下Jenkins的下载、安装与启动
  13. 第二章 SPSS 的数据管理
  14. Python3的对象和类
  15. (解决)Circular view path [index]: would dispatch back to the current handler URL [] again. Che
  16. linux工程师前景_嵌入式Linux工程师发展前景 嵌入式工程师待遇怎样?
  17. 如何准备pmp考试?
  18. tomcat出现“localhost拒绝了我们的请求”问题
  19. 【solr】solr介绍
  20. 程序员男友“嫌”我收入低,劝我转行互联网,我该听他的吗?

热门文章

  1. Mac电脑上最好的3个小说阅读器
  2. 轻松将CAD文件转为加密的PDF文件
  3. 创建算法交易机器人:用MQL4编写Expert Advisor的基础
  4. 牛客j寒假算法训练营一(待补充)
  5. 计算机实战项目之 [含论文+答辩PPT+源码等]基于javaweb+mysql的促销秒杀竞拍商城|电商购物
  6. LintCode领扣算法问题答案:190. 下一个排列
  7. LDREX and STREX
  8. 行政事业单位固定资产管理软件
  9. Solving environment: failed with initial frozen solve. 阴沟系列 正确安装低版本的gpu pytorch
  10. Lightroom 与 Lightroom Classic 的区别,有什么不同之处