我原本是要自己写一个脚本去爬“有色”站的图片看的,省得一张一张下载了。但是我当时遇到了问题,
就是:我取到了图片的url,在浏览器上打开正常,但是就是使用open,write或者使用urlretrieve都不能保存下来,后来
我决定用wget来下载了。看看我慢慢完成。
第一:这种图片分了好几种版块,我要下载的这个有这么个特点:
http://www.。。。。。屁都不是。。。。。。。。.info/forum-11-1.html
这里forum-11-1,这里的11是版块号,而1是进入版块后的页码
现在就去构造一下这些URL来试试。
# coding: utf-8 import urllib2, urllib, re, os
class XAV: def __init__(self, sectionNum): self.homePage = 'http://www.。。。。。。。.info' self.sectionURL = self.homePage + '/' + 'forum-' + str(sectionNum) + '-'
def getPageURL(self, pageNum): self.pageURL = self.sectionURL + str(pageNum) + '.html' return self.pageURL
xav = XAV(10)
print xav.getPageURL(1)
第二步:现在得到了一个版块的URL后,我们就要打开,然后看看每一个帖子的URL了。
里面的格式是这样的:
<th class="common"> <a href="thread-742843-1-1.html" onclick="atarget(this)" class="xst" >帖子的名称加上这个[10P]</a> <span class="tps"> ...<a href="thread-742843-2-1.html">2</a></span> </th>
thread-742843-1-1.html和thread-742843-2-1.html
这里有这两个,一般都是第一页就是所有图片了,其它页是回复的,所以我们只要第一个的那个。
# coding: utf-8 import urllib2, urllib, re, os
class XAV: def __init__(self, sectionNum): self.homePage = 'http://www.。。。。。。。。.info' self.sectionURL = self.homePage + '/' + 'forum-' + str(sectionNum) + '-'
def getPageURL(self, pageNum): self.pageURL = self.sectionURL + str(pageNum) + '.html' return self.pageURL
def getHtmlContent(self, url): try: request = urllib2.Request(url) response = urllib2.urlopen(request) return response.read() except urllib2.URLError, e: if hasattr(e, "reason"): print "failed to ", url return None
def getTopicURL(self, pageUrl): content = self.getHtmlContent(pageUrl) pattern = re.compile('<th class="common">.*?<a href="(.*?)"', re.S) result = re.search(pattern, content) if result: topicURL = self.homePage + '/' + result.group(1).strip() return topicURL else: return None
xav = XAV(10)
pageURL = xav.getPageURL(1) xav.getTopicURL(pageURL)
第三步:这里就得到了这页中,一个帖子的地址,然后我们就要进入这个帖子,里面,把图片下载下来。
我去实现一下,看看
照片在源码里的格式是这样的:
<img src="http://img.。。。。。.com/uploads/2015/03/20150318204649oby42.jpeg" onload="thumbImg(this)" alt="" /><br />