Python抓取糗事百科成人版图片
最近开始学习爬虫,一开始看的是静觅的爬虫系列文章,今天看到糗事百科成人版,心里就邪恶了一下,把图片都爬下来吧,哈哈~
虽然后来实现了,但还是存在一些问题,暂且不提,先切入正题吧,没什么好说的,直接上代码如下:
环境:Python2.79
#coding: utf-8
import urllib2
import urllib
import re
import os #糗百成人版抓取图片
class QBAdult: #类初始化
def __init__(self):
self.baseURL = "http://www.qiubaichengnian.com/"
#获取索引页面内容
def getPage(self, pageIndex):
url = self.baseURL + "index_" + str(pageIndex) + ".html"
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept':'text/html;q=0.9,*/*;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding':'gzip',
'Connection':'close',
'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host
}
req_timeout = 5
request = urllib2.Request(url, None, req_header)
reponse = urllib2.urlopen(request, None, req_timeout)
#print reponse.read().decode('gbk')
return reponse.read().decode('gbk') #获取页面所有条目信息,list格式
def getContents(self, pageIndex):
page = self.getPage(pageIndex)
pattern = re.compile('div class="ui-module".*?<a href=.*?>(.*?)</a>.*?<img.*?src="(.*?)"', re.S)
items = re.findall(pattern, page)
#for item in items:
#print item[0], item[1]
return items #获取页面所有图片
def getAllImgs(self, items): images = []
for item in items:
images.append(item[1])
return images #保存多张图片
def saveAllImg(self, images, n, name):
number = 1
print u"--------------正在保存第", n , u"页美女图片-------------"
for imageURL in images:
splitPath = imageURL.split('.')
fTail = splitPath.pop()
fileName = name + "/" + str(n) + "-" + str(number) + "." + fTail
self.saveImg(imageURL, fileName)
number += 1 #传入图片地址,文件名,保存单张图片
def saveImg(self, imageURL, fileName):
u = urllib.urlopen(imageURL)
data = u.read()
f = open(fileName, 'wb')
f.write(data)
print u"正在保存美女图片", fileName
f.close() #创建新目录
def mkdir(self, path):
path = path.strip()
#判断是否存在
isExists = os.path.exists(path)
if not isExists:
print u"新建名字为", path, u"的文件夹"
os.makedirs(path)
return True
else:
#如果目录存在则不创建,并提示目录已存在
print u"名为", path, u"的文件夹已经创建成功"
return False def savePageInfos(self, start, end):
fileName = "beautifull"
#获取一页内容,存入beautifull文件夹
self.mkdir(fileName)
for i in range(start, end+1):
print u"正在保存第", i, "页的美女图片"
contents = self.getContents(i)
images = self.getAllImgs(contents)
self.saveAllImg(images, i, fileName) qAdult = QBAdult()
qAdult.savePageInfos(1, 301)
其中16-23行的代码是后来出现IOERROR以及超时等错误后加上的,但是这种方法只是治标不治本,时不时程序还会停止,错误如下:

小规模抓取图片,几百页抓取会出现如上问题,我还没有找到什么原因。。。。
Python抓取糗事百科成人版图片的更多相关文章
- Xpath--使用Xpath爬取糗事百科成人版图片
#!usr/bin/env python#-*- coding:utf-8 _*-"""@author:Hurrican@file: 爬取糗事百科.py@time: 20 ...
- python 抓取糗事百科糗图
1 首先看下要抓取的页面 这是糗事百科里面的糗图页面,每一页里面有很多的图片,我们要做的就是把这些图片抓取下来. 2 分析网页源代码 发现源代码里面的每张图是这样储存的,所以决定使用正则匹配出图片的u ...
- Python爬虫--抓取糗事百科段子
今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...
- Python爬取糗事百科
import urllib import urllib.request from bs4 import BeautifulSoup """ 1.抓取糗事百科所有纯 ...
- bs4抓取糗事百科
抓取糗事百科内容及评论,不包含图片信息.user-agent填入浏览器的即可.user-agent对应的value,360极速浏览器的话,可以在地址栏输入about:version,回车,用户代理后面 ...
- python爬取糗事百科段子
初步爬取糗事百科第一页段子(发布人,发布内容,好笑数和评论数) #-*-coding:utf--*- import urllib import urllib2 import re page = url ...
- python 爬取糗事百科 gui小程序
前言:有时候无聊看一些搞笑的段子,糗事百科还是个不错的网站,所以就想用Python来玩一下.也比较简单,就写出来分享一下.嘿嘿 环境:Python 2.7 + win7 现在开始,打开糗事百科网站,先 ...
- Python爬取糗事百科示例代码
参考链接:http://python.jobbole.com/81351/#comment-93968 主要参考自伯乐在线的内容,但是该链接博客下的源码部分的正则表达式部分应该是有问题,试了好几次,没 ...
- Python爬虫爬取糗事百科段子内容
参照网上的教程再做修改,抓取糗事百科段子(去除图片),详情见下面源码: #coding=utf-8#!/usr/bin/pythonimport urllibimport urllib2import ...
随机推荐
- kubernetes elasticsearch2.4 集群安装
一.制作docker镜像: Dockerfile文件: FROM alpine:latest MAINTAINER chengcuichao RUN apk update && apk ...
- maven安装配置参数化打包命令
Maven使用 maven的配置文件看似很复杂,其实只需要根据项目的实际背景,设置个别的几个配置项而已.maven有自己的一套默认配置,使用者除非必要,并不需要去修改那些约定内容.这就是所谓的“约定优 ...
- nmon监控及简要分析
性能测试中,各个服务器资源占用统计分析是一个很重要的组成部分,通常我们使用nmon这个工具来进行监控以及监控结果输出. 一. 在监控阶段使用类似下面的命令 ./nmon -f write_3s_20v ...
- etcd:从应用场景到实现原理的全方位解读 转自infoq
转自 infoq etcd:从应用场景到实现原理的全方位解读 http://www.infoq.com/cn/articles/etcd-interpretation-application-scen ...
- FFmpeg 入门(3):播放音频
本文转自:FFmpeg 入门(3):播放音频 | www.samirchen.com 音频 SDL 提供了播放音频的方法.SDL_OpenAudio 函数用来让设备播放音频,它需要我们传入一个包含了所 ...
- handle 和module
<httpHandlers> <add verb="*" path="*" type="ClassLibrary831.TestHa ...
- linux堆栈
linux堆栈 进 程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态 ...
- iOS开发值得学习的Demo
一.HXWeiboPhotoPicker - 仿微博照片选择器 GitHub地址:https://github.com/LoveZYForever/HXWeiboPhotoPicker 二.AFNet ...
- static变量、static方法之间的异同
private SchemeBean getEmptyScheme() { SchemeBean scheme = new SchemeBean(); scheme ...
- Flume在企业大数据仓库架构中位置及功能
Flume在企业大数据仓库架构中位置及功能 hadoop 数据仓库 flume 数据仓库架构 1.如下图所示,外部数据中,关系型数据库导入到HDFS用sqoop,由Nginx产生的文件实时监控用Flu ...