Python爬虫之爬取站内所有图片
| title | date | tags | layut |
|---|---|---|---|
|
Python爬虫之爬取站内所有图片
|
2018-10-07
|
Python
|
post
|
如需在非linux端使用请对代码中路径符号进行更改
捧上狗屎代码
#-*- coding:utf-8 -*-
import re
import urllib
import urllib2
import os
import chardet
import sys
'''
def get_html(url):#正常获取网页内容
try:
request = urllib2.Request(url,headers=ua_headers)
response = urllib2.urlopen(request)
html = response.read()
return html
except:
print "获取内容失败"
'''
def get_html(url):#转码获取网页内容
try:
request = urllib2.Request(url,headers=ua_headers)
data = urllib2.urlopen(request).read()
typeEncode = sys.getfilesystemencoding()
infoencode = chardet.detect(data).get('encoding','gb2312')#根据网站编码来更改此行中的”gb2312“
html = data.decode(infoencode,'ignore').encode(typeEncode)
return html
except:
print "获取内容失败"
ua_headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36',
'Cookie': 'AspxAutoDetectCookieSupport=1'
}
url = "http://www.5442.com/meinv/"
########################################################
#先获取meinv页面内的所有tag链接。然后利用tag的名字创建相应的目录。
########################################################
tag_code = get_html(url)
tag_egrep = r'href="(.*).*" class="'
tag_url_list = re.findall(tag_egrep, tag_code)
print
print "[V]已成功爬去meinv页面内所有tag分类的链接"
print tag_url_list##打印meinv页面的所有链接
for tag_url in tag_url_list:
try:
tag_dir_name = tag_url[24:-5]
#tag_mkpath = "C:\\Users\\Administrator\\Desktop\\Python-learn\\Photos\\" + tag_dir_name
tag_mkpath = "Photos/" + tag_dir_name
tag_mkdir = os.path.exists(tag_mkpath)
print
print "...已成功匹配到该Tag的名称:" + tag_dir_name
if not tag_mkdir:
os.makedirs(tag_mkpath)
print "...创建%s目录成功----"%tag_dir_name
else:
print "...已有此%s目录----"%tag_dir_name
except:
print "...[X]获取%s链接失败或创建%s文件夹失败[X]"%tag_dir_name
##################################
#然后使用拿到的tag链接获取所有tz的链接。
##################################
try:
tz_code = get_html(tag_url)
tz_url_egrep = r'href="(.*).*" target="_blank" title="'
tz_url_list = re.findall(tz_url_egrep,tz_code)
print tz_url_list
for tz_url in tz_url_list:
print ".........当前帖子链接---"+tz_url
try:
xz_dir = tag_mkpath + ".html"
urllib.urlretrieve(tag_url,xz_dir)
#tz_name_egrep = r'_blank" title="(.*?)">'
tz_name_egrep = r"<img alt='(.*?)' src"
tz_name_list = re.findall(tz_name_egrep, tz_code)
print tz_name_list
t=0
###############################################
#然后使用拿到的tag链接获取所有tz的名字。并创建相应的目录
###############################################
for x_tz_name in tz_name_list:
print ".........已成功匹配到"+x_tz_name
tz_mkpath = tag_mkpath + "/" + x_tz_name
tz_mkdir = os.path.exists(tz_mkpath)
if not tz_mkdir:
os.makedirs(tz_mkpath)
print ".........创建%s目录成功"%x_tz_name
else:
print ".........已有%s此目录"%x_tz_name
###############################################
#然后使用拿到的tag链接获取所有tz的链接。并创建相应的目录
###############################################
xx = 0
while True :
try:
ttz_url = tz_url_list[t]#手动循环每个帖子
###########################
#添加每个帖子内的第N个页面的连接
###########################
if xx == 0:
tz_HQ_url = ttz_url
else:
tz_hz_url = ttz_url[-5:]
tz_qz_url = ttz_url[:-5]+"_"
tz_HQ_url = tz_qz_url + str(xx) + tz_hz_url
print "-------------------------------------------"+tz_HQ_url
#######################
#获取当前页面的所有图片连接
#######################
img_code = get_html(tz_HQ_url)
img_url_egrep = r"src='(.*).*' alt=''"
img_url_list = re.findall(img_url_egrep,img_code)
img = img_url_list[0]
try:
print "............已成功爬取到%s内所有图片的链接"% x_tz_name
print "............[所有图片的链接]"
print img_url_list
print "............%s中第%s个图片链接:%s"%(x_tz_name,xx,img)
img_name = tag_mkpath + "/"+x_tz_name +"/"+ img[-15:]
urllib.urlretrieve(img,img_name)#下载图片
print "...............已成功下载图片:"+img_name
print "========================================================="
print "========================================================="
print
except:
print "[X]下载图片出错!"
print "========================================================="
print "========================================================="
print
xx = xx + 1
except:
print "while false"
break
t=t+2
except:
print "爬取%s中图片链接失败!"%x_tz_name
##########################################################################
#判断当前循环执行后是否创建对应的文件夹,如果有则结束循环直接进行下一个tag标签页面的爬取
##########################################################################
if os.access(str(xz_dir), os.F_OK):
break
else:
pass
#渣渣代码不足为外人道也
except:
print "爬取%s中帖子失败"%tag_dir_name
捧上低帧GIF
Python爬虫之爬取站内所有图片的更多相关文章
- Python爬虫之爬取淘女郎照片示例详解
这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...
- Python爬虫之爬取慕课网课程评分
BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
- python爬虫实战---爬取大众点评评论
python爬虫实战—爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经 ...
- python爬虫25 | 爬取下来的数据怎么保存? CSV 了解一下
大家好 我是小帅b 是一个练习时长两年半的练习生 喜欢 唱! 跳! rap! 篮球! 敲代码! 装逼! 不好意思 我又走错片场了 接下来的几篇文章 小帅b将告诉你 如何将你爬取到的数据保存下来 有文本 ...
- python爬虫项目-爬取雪球网金融数据(关注、持续更新)
(一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_ ...
- 初次尝试python爬虫,爬取小说网站的小说。
本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...
- python 爬虫之爬取大街网(思路)
由于需要,本人需要对大街网招聘信息进行分析,故写了个爬虫进行爬取.这里我将记录一下,本人爬取大街网的思路. 附:爬取得数据仅供自己分析所用,并未用作其它用途. 附:本篇适合有一定 爬虫基础 crawl ...
随机推荐
- luogu P4219 [BJOI2014]大融合
题解:原来LCT也能维护子树信息,我太Naive了 用LCT维护当前子树节点个数 具体做法维护siz[x]=当前Splay子树和指向当前Splay子树的虚边所代表的节点个数 auxsiz[x]=指向x ...
- java-正则表达式判断移动联通电信手机号
package com.linbilin.phone; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- python基础2--进制、字符编码和文件处理
一.进制 1.二进制 定义 二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一" 转换方式 二进制转换为十进制: 把二进制数按权展开.相加即得十进制数. ...
- CentOS 7.3 下部署基于 Node.js的微信小程序商城
本文档为微信小程序商城NideShop项目的安装部署教程,欢迎star NideShop商城api服务:https://github.com/tumobi/nideshop NideShop微信小程序 ...
- 干货 | 利用京东云Web应用防火墙实现Web入侵防护
摘要 本指南描述如何利用京东云Web应用防火墙(简称WAF),对一个简单的网站(无论运行在京东云.其它公有云或者IDC)进行Web完全防护的全过程.该指南包括如下内容: 准备环境 在京东云上准备Web ...
- 统计web 访问日志的请求数据
tomcat日志格式 在配置文件 server.xml 中,具体参照官方文档 https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#A ...
- 数据处理pandas
1.缺失值时间戳不为NaN,为NaT, 同样判断都为isna()或notna()方法2.删值\去重 df.dropna() df.drop_duplicates() 3.上下值插值 df.fillna ...
- Oracle与MySQL的区别对比
本文对数据库Oracle与MySQL进行了区别对比,其中从并发性.一致性.事务.数据持久性等十三方面进行了对比. 本文摘自 51cto 一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源 ...
- 项目部署篇之——下载安装Xftp6,Xshell6
俗话说工欲善其事必先利其器,想要在服务器上部署环境就得先安装操作工具. 我用的是xshell6,和xftp6.下面是下载连接,都是免费版的,不需要破解 xftp6链接:https://pan.baid ...
- 浙江省赛 ZOJ - 4033
题意: 第一行给出T代表有几个测试样例, 第二行给出n代表有几个人, 第三行给出一个由0和1组成的字符串,0代表女生,1代表男生. 并且第i个人有i个宝石. 现在要把这些人分为四组,G1 G2 两组是 ...