网络蜘蛛-搜狐博客批量下载(之一)

网上的鸟备份工具居然要收费,还是自己写吧。只针对sohu博客,其余博客类推,主要是分析博客链接组织和内容结构。


今天先针对单个博客来做点试验,以获取一篇URL已知的博客正文为目标:


直接上代码:

import urllib2,cookielib
import re

class HTTPRefererProcessor(urllib2.BaseHandler):
    def __init__(self):
        self.referer = None 

    def http_request(self, request):
        if ((self.referer is not None) and
            not request.has_header("Referer")):
            request.add_unredirected_header("Referer", self.referer)
        return request 

    def http_response(self, request, response):
        self.referer = response.geturl()
        return response 

    https_request = http_request
    https_response = http_response 


cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), HTTPRefererProcessor(),)

urllib2.install_opener(opener) 


request = urllib2.Request(
        url     = 'http://raywill.blog.sohu.com/179914899.html')


ret = opener.open(request)
content = ret.read() 
#print content
p = re.compile('<div class="item-content" id="main-content">([\s\S]*?)\<\!\-\-')
m = p.search(content)
print m.group(1)


得到的结果:

 <div style="line-height:160%;font-size:14px;"><p>    夏日正盛,宅的好时节。纵然是夏天,宅久了,日子也会发霉。脱宅计划酝酿中。</p><p>    月末,盼到发工资了,因为本月大部分日子还是实习生身份,所以工资少得可怜。工资少不是宅的理由!脱宅利器:相机,单车。二缺一,遂决定入单车一辆。</p><p>    上午喝了碗数学家泡的粥出门,12点到计算所。高温假了,所里没几个人。10楼的工位排列突然变得十分坑爹,真是密不透风。郭,康师傅,我,先陪小熊去村子里买了手机。发现电脑城面貌焕然一新,开始步入文明社会:再也没有了拉客现象了,也没有一听就是骗子状的吆喝声了。这还真有点不适应,哈哈~很赞。早就该这样了,再不管,电脑城就要沦落了。</p><p>    哼哧哼哧到下午四点,困得要死。四人先回所里,歇息片刻,我,郭,康师傅就出发去科苑公寓边上的“远行美”买车了。我也不懂车,都仰仗郭给意见,很快选定Merida的勇士550款。提车装车大概40min,试车讨价还价10min,带锁带套一起1500,给钱走人。郭吃肉去了,剩下我和康师傅,直接骑车一路向南,他回家,我去找Buou吃菜香根。北风那个吹,屁股那个疼!大约50min到一号线,和康师傅分道扬镳,我继续向南。不到10min就到了菜香根。</p><p>    美食,且不表。</p><p>    吃完继续骑行。先上长安街。有自行车道,且十分宽阔,稀饭!一路向东,经过西单,真理部,天安门,国防部,商务部,王府井,国贸。到了新光天地开始朝北转,离家 很近了。10点,历经70分钟,20km,顺利到家。</p><p>    菊花残。</p><p>    喝茶,洗澡,写博客,睡觉。</p><p>    </p><p>    </p><p>    </p></div>

		


以上通过python 2.7.2编译通过,python 3.x可能不行,请读者注意。

SOHU博客的tag可能会变化,唯一的办法就是随时follow咯。当然,如果写得更智能的话,可以采取自学习的方式:抓取多篇博客,自动分析他们的异同,然后找出pattern出来。这里所谓pattern,就是正文模板的开始和结束标示符。


下一篇将分析如何得到搜狐博客的所有文章的URL,

再下一篇将会将二者集成起来,并处理一些异常情况。


作者邮箱: hustos (a) qq.com

作者微博: weibo.com/raywill2


你可能感兴趣的:(网络,python,header,url,div,import)