python爬取5442网站图片
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网站图片相关推荐
- python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂
网址需要自己替换懂的人都懂512*2,主要学习简单的爬虫,别乱用,否则后果自负! [Python] 纯文本查看 复制代码 import requests,bs4,re,os,threadingclas ...
- python爬取pexels网站图片
#coding:utf-8from lxml import etree import requests import urllib.request import progressbar header= ...
- python爬取某网站图片
程序运行需要导包 具体看代码中的,缺啥导啥✌. import requests import re import time import os url="https://pic.netbia ...
- python最新官网图片_python爬取福利网站图片完整代码
存起来 自己学习... import requests,bs4,re,os,threading class MeiNvTu: def __init__(self): self.url_main='ht ...
- python爬取动态网页图片
爬取某知名网站图片(爬取动态网页) python爬取动态网页图片 python爬取动态网页图片 环境: python3.pycharm 库: requests.urllib.json 思路: 1.分析 ...
- Python爬取小姐姐图片
使用Python爬取小姐姐图片 首先上网站链接 唯美女生 爬取图片主要分为一下几步: 1.打开一个你喜欢的小姐姐的网站 E.g xiaojiejie web 2.下载并安装python环境 pytho ...
- python爬取指定关键字图片
''' 爬取指定关键字图片 ''' import re# 正则表达式,解析网页 import requests# 请求网页 import traceback import osdef dowmload ...
- 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爬取Wallhaven网站壁纸并上传百度网盘
更多详情请查看Honker Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘 给大家推荐一款超好用的壁纸下载网站-- wallhaven 第一次知道这个网站的时候,惊为天 ...
最新文章
- Android setOnItemClickListener cannot be used with a spinner
- (zt)Web 2.0奔路进行时
- Hadoop十岁!Doug Cutting成长史+他眼中大数据技术的未来
- 第十六周程序阅读(8)
- ie-css3.htc参数无效,ie-css3.htc怎么用?
- STM32的时钟系统RCC详细整理(转)
- linux java程序启动脚本
- java抽象类的构造函数如何定义_我们可以在Java的抽象类中定义参数化的构造函数吗?...
- openstack介绍(二)
- 什么是单模光纤收发器,应用范围有哪些?
- OpenCV--实现图像滑动窗口截取子图操作
- windows和linux下读取文件乱码的终极解决办法!
- ArrayList和CopyOnWriteArrayList
- Tomcat 下载安装,启动,停止,注册服务,开机自启
- 数字信号处理——IIR滤波器设计
- BSOD Diagnostics
- 修改+首选+dns服务器地址,首选dns服务器地址怎么设置
- 惠普服务器安装系统流程,惠普服务器怎样安装系统?
- 如何让计算机自动重启,Win7电脑定时重启怎么设置?Win7电脑定时关机怎么设置?...
- dialogfragment监听返回键
热门文章
- 中考计算机考试辽宁,2019年辽宁中考考试时间安排,辽宁中考考试科目时间安排表...
- php 查询数据传值,php-如何在Laravel中传递数据进行查看?
- greedy算法策略高效求解分数背包问题
- 教师资格考试科目二 word Exele ppt 应用
- 在博客右下角设置透明卡通小美女,附上源码
- html页面整体隐藏,三种隐藏 HTML 元素的方式
- Adolescent Suicidal Risk Assessment in Clinician-Patient Interaction
- 大数据十年:Cloudera向左,Palantir向右
- 初级程序员升中级程序员需要掌握哪些知识
- github配置SSH keys