python网络爬虫 新浪博客篇

上次写了一个爬世纪佳缘的爬虫之后,今天再接再厉又写了一个新浪博客的爬虫。写完之后,我想了一会儿,要不要在博客园里面写个帖子记录一下,因为我觉得这份代码的含金量确实太低,有点炒冷饭的嫌疑,就是把上次的代码精简了一下,用在另外一个网站而已,而且爬别人的博客总有一种做贼心虚的感觉,怕被各位园友认为是偷窥狂魔。但是这份代码总归是我花了精力去写的,我也不想就此让它深藏在硬盘之中(电脑实在太老了,可能过两年硬盘坏了,这份代码就消失了),还是贴出来权当作抛砖引玉。

说起要爬新浪博客,总归是有一个原因吧。我的原因呢也是什么的简单,就是这两天在网上下载了一本python自然语言处理的一本书,就像尝试着应用一下里面的理论(其实我都还没看呢 哈哈),当然照着书里面的例子玩总归是没什么成就感的,所以就想自己找点东西实验一下。可能你觉得这个原因和爬新浪博客没什么必然联系啊,确实如此,前面扯的东西太虚了,我写这个东西就是为了满足一下自己的偷窥欲望,把曾经女神的博客都下载下来(大家不要喷。。),顺便在用前面讲的高大上的自然语言理论处理一下(估计很难,八成做不下去)。

讲了这么多废话了,现在开始说一说爬虫的工作原理。先原谅我粗糙的涂抹技术,因为实在不想把再出现上次帖子中的情况,大家纷纷在评论中讨论我在知乎看什么。首先在新浪播客找到你要下载用户的主页,在地址栏中最后一般有一个数字对应于用户的id,因为每页放的文章有限,新浪博客采用了分页,对应于url里面的page=2,就是第二页的意思。在当前的页面我们可以用正则表达式解析出文章的发表时间,“查看原文”的链接中找到文章的链接。

因为新浪博客比较开放的原因,不登陆也能查看文章那个的内容,所以就直接用python里的urllib2,也不需要设置cookies,省去了很多麻烦。唯一比较麻烦的是如果文章里面有图片是多媒体的链接,提取里面的文字比较麻烦和繁琐,因为这个界面比较简单,当然也可以直接解析html,不过我已经习惯了正则表达式,虽然很麻烦,但还是硬着头皮写完了。其中正则表达式的替换字符串的功能非常的好用,就重点讲一讲这个吧!

在遇到复杂的字符串替换的时候,正则表达式的sub函数用起来非常的easy。贴一段简单的代码:

#-*- encoding:UTF-8 -*-
import re

s = u‘‘‘<div class="class1">this is string1</div>
<div class="class2">这是字符串二</DIV>‘‘‘

def div_func(m):
    if m is None:
        return ‘‘
    return m.group(1)

if __name__ == ‘__main__‘:
    pattern = re.compile(u‘<div[\S ]*?>(.*?)</div>‘, re.U | re.S | re.I)
    print s
    sss = pattern.sub(div_func, s)
    print
    print sss

在网页中,会碰到很多不同的格式,如代码里面的字符串s,如果想把里面的文字提取出来,对于比较复杂的替换要求,我们可以定义一个函数作为参数传给sub进行处理,运行的结果如下图所示,是不是非常的方便?

再讲讲python的中文编码问题吧,最简单的处理就是尽可能少的用str,尽可能多的用unicode。对于来自文件的输入数据,最好先解码为unicode再做处理,这样可以减少90%的乱码问题。哦,对了,今天还发现了一个非常好用的一个函数,可以用来下载文件

import urllib
urllib.urlretrieve(url, path)

此函数可以将url中的文件下载到本地路径path中,是不是非常的简单。最后展示一下。当然数据不多啦,女神也就一百多篇的文章,用数据库有点杀鸡用牛刀的感觉,直接输出到一个文本文件里面也是挺方便的哈!

最后的最后,还是把源代码贴出来以供大家参考哈!(由于本人实在不擅长描述细节,所以写的很粗,望大家多多见谅啊!)

链接:http://files.cnblogs.com/files/lrysjtu/xlblog.rar

时间: 2024-10-17 15:13:44

python网络爬虫 新浪博客篇的相关文章

Python爬虫爬取一篇韩寒新浪博客

网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取一篇博客,第二节讲爬取一页博客.第三集讲爬取所有博客. 看了视频.也留下了代码. 爬虫第一步:查看网页源码: 第一篇博客的代码为蓝底的部分<a title="" target="_blank" href="http://blog.sina.com.cn/

[Python学习] 简单网络爬虫抓取博客文章及思想介绍

        前面一直强调Python运用到网络爬虫方面非常有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简单介绍下Python是如何爬去网络数据的,文章知识非常简单,但是也分享给大家,就当简单入门吧!同时只分享知识,希望大家不要去做破坏网络的知识或侵犯别人的原创型文章.主要包括: 1.介绍爬取CSDN自己博客文章的简单思想及过程 2.实现Python源码爬取新浪韩寒博客的316篇文章 一.爬虫的简单思想      最近看刘兵的<Web数据挖掘>知道,在研

下载新浪博客文章,保存成文本文件(python)

今天用Python写了一个下载韩寒新浪博客文章的下载器,恩,基本功能如下: 1.从新浪博客上批量下载文章,并按文章标题创建文件 2.对下载的文章进行格式化. 已知Bug:长篇文章格式会错乱 1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 4 import urllib 5 import os 6 import re 7 8 def article_format(usock,basedir): 9 title_flag=True 10 context_s

LoadRunner测试结果分析03 转载至zhangzhe的新浪博客

LoadRunner测试结果分析之我见 前面分析的Web Resource(网络资源)的测试情况,其主要关注的是服务器性能,而系统本身和环境都有可能存在问题,页面诊断(Web Page Diagnostics)主要就是关注这方面的问题.页面诊断可以很好地定位环境问题,如客户端问题.网络问题等,也可以很好的分析系统本身的问题,如网页问题. 1.Web Page Diagnostics (网页诊断)对测试过程中所有的页面进行一个 信息汇总,可以很容易地观察出哪个页面下载耗时,然后选择该页面得其页面分

用python2.7,采集新浪博客

#coding=utf-8 #新浪博客 import urllib import re import os url=['']*1500 #每一骗博客的地址 title=['']*1500 #每一篇博客的标题 page=1 #博客分页 count=1 #文章计数 while page<=9: con=urllib.urlopen('http://blog.sina.com.cn/s/articlelist_1193491727_0_'+str(page)+'.html').read() i=0 h

【转载】利用新浪博客建设网站外链

当今网络管理机制越来越完善,允许发外接的网站越来越少,建设网站外链变得越来越困难,今天和大家分享一篇文章,告诉你如何利用新浪博客建设网站外键. 目前国内知名的博客平台有QQ.网易.新浪.搜狐.百度等,先来分析一下为什么我为什么选择新浪博客建设网站外链? 腾讯博客(QQ空间)是不被搜索引擎收录的,所以直接淘汰. 网易博客使用的是三级域名,即使成功建设外链权重也不高. 百度博客(百度HI)即将要关闭了,完全是浪费时间. 搜狐博客也是使用三级域名,权重并不高. 新浪博客的内容页使用 blog.sina

LoadRunner测试结果分析02 转载至zhangzhe的新浪博客

LoadRunner测试结果分析之我见 上述测试过程的重点在于事务,而LoadRunner生成的测试结果图并不局限于事务上,其中还有是关于Vusers.Errors.Web Resources.Web Page diagnostics的测试图. 1. 对于Vusers的测试图有3种:Running Vusers.Vusers Summary.Rendezvous,其中Running Vusers是关于虚拟用户加压.施压.减压的情况图: Vusers Summary是用户运行结果的综述图:Rend

Windows live Writer博客园,51CTO,网易博客,新浪博客配置方法

今天使用微软的Windows live Writer进行了博客园,51CTO,网易博客,新浪博客的博客发布.感觉效果不错,特别分享给大家.由于csdn账号忘记,所以... 先截个图给大家看下: 说下这款工具的作用吧,很多人在不同的博客网站申请了自己的博客,那么你是否还在为使用Ctrl+C的方式来达到博客的同步呢?如果答案是yes,那么强烈建议你使用Windows live Writer这款工具.当然你也可以实现Metaweblog API实现自己的博客发布器.甚至可以让微博同步博客,这都是可以的

LoadRunner测试结果分析01 转载至zhangzhe的新浪博客

LoadRunner测试结果分析之我见 LoadRunner生成测试结果并不代表着这次测试结果的结束,相反,这次测试结果的重头戏才刚刚开始.如何对测试结果进行分析,关系着这次测试的成功与否.网上关于LoadRunner测试结果如何分析的介绍相当匮乏,在总结他人的观点和自己的实验体会基础上来介绍如何进行LoadRunner测试结果分析. 1. LoadRunner测试结果分析的第一步应该是查看分析综述(Analysis Summary),其包括统计综述(Statistics Summary).事务