视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何用Python爬虫获取那些价值博文
2020-11-27 14:13:06 责编:小采
文档
 本篇文章的内容是如何用Python爬虫获取那些价值博文,现在分享给大家,有需要的朋友可以参考一下这篇文章地的内容

作者 CDA数据分析师

在CSDN上有很多精彩的技术博客文章,我们可以把它爬取下来,保存在本地磁盘,可以很方便以后阅读和学习,现在我们就用python编写一段爬虫代码,来实现这个目的。

我们想要做的事情:自动读取博客文章,记录标题,把心仪的文章保存到个人电脑硬盘里供以后学习参考。

过程大体分为以下几步:

  • 1. 找到爬取的目标网址;

  • 2. 分析网页,找到自已想要保存的信息,这里我们主要保存是博客的文章内容;

  • 3. 清洗整理爬取下来的信息,保存在本地磁盘。

  • 打开csdn的网页,作为一个示例,我们随机打开一个网页:

    http://blog.csdn.net/u013088062/article/list/1。

    可以看到,博主对《C++卷积神经网络》和其它有关机计算机方面的文章都写得不错。

    爬虫代码按思路分为三个类(class),下面3个带“#”的分别给出了每一个类的开头(具体代码附后,供大家实际运行实现):

    采用“类(class)”的方式属于Python的面向对象编程,在某些时候比我们通常使用的面向过程的编程方便,在大型工程中经常使用面向对象编程。对于初学者来说,面向对象编程不易掌握,但是经过学习习惯之后,会逐步慢慢从面向过程到面向对象编程过渡。

    特别注意的是,RePage类主要用正则表达式处理从网页中获取的信息,正则表达式设置字符串样式如下:

    用正则表达式去匹配所要爬取的内容,用Python和其它软件工具都可以实现。正则表达式有许多规则,各个软件使用起来大同小异。用好正则表达式是爬虫和文本挖掘的一个重要内容。

    SaveText类则是把信息保存在本地,效果如下:


    用python编写爬虫代码,简洁高效。这篇文章仅从爬虫最基本的用法做了讲解,有兴趣的朋友可以下载代码看看,希望大家从中有收获。

    附相关Python代码:

    1#-*-coding:UTF-8-*-
    2import re
    3import urllib2
    4import sys
    5#目的:读取博客文章,记录标题,用Htnl格式保存存文章内容
    6#版本:python2.7.13
    7#功能:读取网页内容
    8class GetHtmlPage():
    9 #注意大小写
    10 def __init__(self,strPage):
    11 self.strPapge = strPage
    12 #获取网页
    13 def GetPage(self):
    14 req = urllib2.Request(self.strPapge) # 建立页面请求
    15 rep = req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
    16 try:
    17 cn = urllib2.urlopen(req) #网页请求
    18 page = cn.read() #读网页
    19 uPage = page.decode("utf-8") #网页编码
    20 cn.close()
    21 return uPage
    22 except urllib2.URLError, e: #捕获异常
    23 print 'URLError:', e.code
    24 return
    25 except urllib2.HTTPError, e: #捕获异常
    26 print 'HTTP Error:' + e.reason
    27 return
    28 return rePage
    29#正则表达式,获取想要的内容
    30class RePage():
    31#正则表达式提取内容,返回链表
    32 def GetReText(self,page,recode):
    33 rePage = re.findall(recode,page,re.S)
    34 return rePage
    35#保存文本
    36class SaveText():
    37 def Save(self,text,tilte):
    38 try:
    39 t="blog\\"+tilte+".html"
    40 f = file(t,"a")
    41 f.write(text)
    42 f.close()
    43 except IOError,e:
    44 print e.message
    45if __name__ == "__main__":
    46 s = SaveText()
    47 #文件编码
    48 #字符正确解码
    49 reload(sys)
    50 sys.setdefaultencoding( "utf-8" ) #获得系统的默认编码
    51 #获取网页
    52 page = GetHtmlPage("http://blog.csdn.net/u013088062/article/list/1")
    53 htmlPage = page.GetPage()
    54 #提取内容
    55 reServer = RePage()
    56 reBlog = reServer.GetReText(htmlPage,r'.*?(\s.+?)') #获取网址链接和标题
    57 #再向下获取正文
    58 for ref in reBlog:
    59 pageHeard = "http://blog.csdn.net/" #加链接头
    60 strPage = pageHeard+ref[0]
    61 tilte=ref[1].replace('[置顶]', "") #用替换的功能去除杂的英文
    62 tilte=tilte.replace("\r\n","").lstrip().rstrip()
    63 #获取正文
    htmlPage = GetHtmlPage(strPage)
    65 htmlPageData = htmlPage.GetPage()
    66 reBlogText = reServer.GetReText(htmlPageData,'

    (.+?)

    ')
    67 #保存文件
    68 for s1 in reBlogText:
    69 s1='\n'+s1
    70 s.Save(s1,tilte)

    相关推荐:

    php实现简单爬虫的开发案例

    Python爬虫浏览器标识库

    记录一次简单的Python爬虫实例

    下载本文
    显示全文
    专题