python爬取5442网站图片

python3环境下:

#!/usr/bin/python
#encoding: utf-8
"""
本次爬虫使用的是python3的版本,并且本次的目标网站并没有采用js来加载图片,所以没有涉及对js脚本的解析,都是通过来分析html文件通过正则来一步步提取图片网址,然后存起来。
首先这个网站有很多分类,到美女图这个子网页,可以发现有很多页,同时每页有多个相册,每个相册点进去就会有多个页,每页有多张照片
流程大概是这样
找到所有页数
----遍历所有的页数
----遍历当前页的所有相册(给每个相册建立一个目录)
----遍历当前相册的所有图片(遍历此相册的所有页(遍历当前页的所有照片并找到图片的url))
----获得图片url就存起来
"""
import urllib.request
import re
import os
import time
import socket
from hashlib import md5
#001获得整个页面
def get_html(url):socket.setdefaulttimeout(10)papg = urllib.request.urlopen(url)html = papg.read()html = html.decode("gbk")#html = unicode(html, "gbk").encode("utf8")return htmldef get_img(html):imgre = re.compile(r'<img src="(.*?)"')imglist = re.findall(imgre, html)for imgurl in imglist:#print (imgurl)global xurllib.request.urlretrieve(imgurl, '.\\photo\%05d.jpg'%x)x += 1print("正在下载第%s张图片"%x)def get_tag_list(html):szurlre = re.compile(r'<a href="(http://www.5442.com/tag/.*?.html)" class')tag_list = re.findall(szurlre, html)return tag_list
#002   获得总页码数
def get_page_num(html):szurlre = re.compile(r'(\d+).html\'>末页')szresult = re.findall(szurlre, html)if len(szresult) == 0:page_num = 0else:page_num = int(szresult[0])#print (page_num)return page_num
#004 获取相册的页数
def get_page_num2(html):szurlre = re.compile(r'共(\d+)页')szresult = re.findall(szurlre, html)if len(szresult) == 0:page_num = 0else:page_num = int(szresult[0])#print (page_num)return page_num#003 获得单页的相册
def get_ablum_list(html):#"http://www.5442.com/meinv/20170602/44873.html" title="白皙丰满少女画室写真 甜美少女白嫩巨乳诱人美照" target="_blank">白皙丰满少女画室写</a>##szurlre = re.compile(r'(http://www.5442.com/meinv/2\d+/\d+.html)" target=')szurlre = re.compile(r'(http://www.5442.com/meinv/2\d+/\d+.html)')ablum_list = re.findall(szurlre, html);#print("----------len-----------:",len(ablum_list))return ablum_list#获得相册的名称
def get_ablum_name(html):szurlre = re.compile(r'<title>(\S+)</title>')ablum_name = re.findall(szurlre, html)return ablum_name[0]#005  获得单页的图片
def get_photo(html, dir, photo_num):imgre = re.compile(r'点击图片进入下一页\' ><img src=\'(http://\S+.jpg)\' alt=')imglist = re.findall(imgre, html)#print("len_imglist",len(imglist))for imgurl in imglist:try:socket.setdefaulttimeout(2)#urllib.request.urlretrieve(imgurl, unicode('.\\photo\\%s\%05d.jpg'%(dir, photo_num), "utf8"))store_path='.\\photo\\' + '\\'+ md5(imgurl.encode("utf8")).hexdigest() + "." + 'jpg'#print("#######:",store_path)urllib.request.urlretrieve(imgurl, store_path)print("正在下载第%s张图片"%photo_num)photo_num = photo_num + 1except:continuereturn photo_numurl = "http://www.5442.com/meinv/"
baseurl = "http://www.5442.com"
html = get_html(url)
page_num = get_page_num(html)
print ("一共有%s页"%page_num)
ablum_num = 0
try:os.mkdir("photo")
except:print ("目录已经存在,继续下载")
#遍历所有的页
for i in range(1, page_num):if i != 1:url = "http://www.5442.com/meinv/list_1_%s.html"%itry:html = get_html(url)except:continueablum_list = get_ablum_list(html)#遍历当前页的所有相册for ablum_url in ablum_list:ablum_num = ablum_num + 1try:photo_html = get_html(ablum_url)except:continueurl_part = ablum_url[0:-5]photo_page_num = get_page_num2(photo_html)#获取相册名有点问题,直接以数字来创建更加方便,便于分#ablum_name = get_ablum_name(photo_html)ablum_name = "picture" + "%05d" % ablum_numprint (ablum_name)photo_num = 0#创建相册对应的目录ui_ablum_name = ablum_name#unicode(ablum_name, "utf8")#try:#os.mkdir(".\\photo\\"+ui_ablum_name)#except:##   continuefor i in range(1, photo_page_num):if i != 1:ablum_url = url_part + "_%d"%i + ".html"try:photo_html = get_html(ablum_url)#print("###获得photo地址###")except:continue#进行存储操作 包含照片的网页,存储相册名称,存储第几张photo_num = get_photo(photo_html, ablum_name, photo_num)

python爬取5442网站图片相关推荐

  1. python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂

    网址需要自己替换懂的人都懂512*2,主要学习简单的爬虫,别乱用,否则后果自负! [Python] 纯文本查看 复制代码 import requests,bs4,re,os,threadingclas ...

  2. python爬取pexels网站图片

    #coding:utf-8from lxml import etree import requests import urllib.request import progressbar header= ...

  3. python爬取某网站图片

    程序运行需要导包 具体看代码中的,缺啥导啥✌. import requests import re import time import os url="https://pic.netbia ...

  4. python最新官网图片_python爬取福利网站图片完整代码

    存起来 自己学习... import requests,bs4,re,os,threading class MeiNvTu: def __init__(self): self.url_main='ht ...

  5. python爬取动态网页图片

    爬取某知名网站图片(爬取动态网页) python爬取动态网页图片 python爬取动态网页图片 环境: python3.pycharm 库: requests.urllib.json 思路: 1.分析 ...

  6. Python爬取小姐姐图片

    使用Python爬取小姐姐图片 首先上网站链接 唯美女生 爬取图片主要分为一下几步: 1.打开一个你喜欢的小姐姐的网站 E.g xiaojiejie web 2.下载并安装python环境 pytho ...

  7. python爬取指定关键字图片

    ''' 爬取指定关键字图片 ''' import re# 正则表达式,解析网页 import requests# 请求网页 import traceback import osdef dowmload ...

  8. python爬取贴吧图片_Python爬取贴吧多页图片

    Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了. #coding:utf-8 import urllib import urllib2 import re import os ...

  9. Python爬取自然风景图片代码

    Python爬取自然风景图片代码 \qquad 需要用到python的etree库和requests库,需要提前下载安装. from lxml import etree import requests ...

  10. Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘

    更多详情请查看Honker Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘 给大家推荐一款超好用的壁纸下载网站-- wallhaven 第一次知道这个网站的时候,惊为天 ...

最新文章

  1. Android setOnItemClickListener cannot be used with a spinner
  2. (zt)Web 2.0奔路进行时
  3. Hadoop十岁!Doug Cutting成长史+他眼中大数据技术的未来
  4. 第十六周程序阅读(8)
  5. ie-css3.htc参数无效,ie-css3.htc怎么用?
  6. STM32的时钟系统RCC详细整理(转)
  7. linux java程序启动脚本
  8. java抽象类的构造函数如何定义_我们可以在Java的抽象类中定义参数化的构造函数吗?...
  9. openstack介绍(二)
  10. 什么是单模光纤收发器,应用范围有哪些?
  11. OpenCV--实现图像滑动窗口截取子图操作
  12. windows和linux下读取文件乱码的终极解决办法!
  13. ArrayList和CopyOnWriteArrayList
  14. Tomcat 下载安装,启动,停止,注册服务,开机自启
  15. 数字信号处理——IIR滤波器设计
  16. BSOD Diagnostics
  17. 修改+首选+dns服务器地址,首选dns服务器地址怎么设置
  18. 惠普服务器安装系统流程,惠普服务器怎样安装系统?
  19. 如何让计算机自动重启,Win7电脑定时重启怎么设置?Win7电脑定时关机怎么设置?...
  20. dialogfragment监听返回键

热门文章

  1. 中考计算机考试辽宁,2019年辽宁中考考试时间安排,辽宁中考考试科目时间安排表...
  2. php 查询数据传值,php-如何在Laravel中传递数据进行查看?
  3. greedy算法策略高效求解分数背包问题
  4. 教师资格考试科目二 word Exele ppt 应用
  5. 在博客右下角设置透明卡通小美女,附上源码
  6. html页面整体隐藏,三种隐藏 HTML 元素的方式
  7. Adolescent Suicidal Risk Assessment in Clinician-Patient Interaction
  8. 大数据十年:Cloudera向左,Palantir向右
  9. 初级程序员升中级程序员需要掌握哪些知识
  10. github配置SSH keys