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 ...
随机推荐
- 【数据结构】Hash表简介及leetcode两数之和python实现
文章目录 Hash表简介 基本思想 建立步骤 问题 Hash表实现 Hash函数构造 冲突处理方法 leetcode两数之和python实现 题目描述 基于Hash思想的实现 Hash表简介 基本思想 ...
- 自己简单配置webpack
第一步 // 1.在新建文件夹中,npm init -y,生成package.json文件 // package.json 文件内容 { "name": "02webpa ...
- 专为前端开发者准备的15款优秀的Sublime Text插件
Sublime Text 已成为了目前最流行的代码编辑器之一.它的反应速度.简单易用性以及丰富的插件生态,让众多前端开发者们为之倾倒. 为了帮助开发者们更便捷地使用 Sublime Text ,我们决 ...
- 为什么声明了int型的变量并且直接初始化后,int型变量的地址一直在变化?
/************************************************************************* > File Name: ptr_varia ...
- vim 马哥
VIM编辑器 编辑模式 默认 输入模式 i 末行模式 : vim +# file #打开文件后直接跳到第#行 vim + file 直接跳到尾行 vim +/关键字 跳转到 ...
- 浅谈Redis五个对象类型的底层原理
本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html Redis是一种key/value型数据库,其 ...
- Codeforces 1288C - Two Arrays
题目大意: 给定n和m,有两个数组,两个数组的长度都等于m 数组内每个元素都在1到n中 对于两个数组对应的位置i,必须满足a[i]<=b[i] a数组必须是不下降的序列 b数组必须是不上升的序列 ...
- jq轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- grub.cfg文件编辑
grub2启动项里面找不到Windows的情况,这时候就需要自己去配置grub.cfg 在grub.cfg中加入如下代码: menuentry 'Windows Boot Manager (on /d ...
- Java使用Thrift,Thrift结构体定义
1.Thrift定义文件,Thrift常见的数据类型 1.基本类型(括号内为对应的Java类型): bool(boolean): 布尔类型(TRUE or FALSE) byte(byte): 8位带 ...