专栏首页IT派如何用Python爬虫获取那些价值博文

如何用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-*-
 2 import re
 3 import urllib2
 4 import sys
 5 #目的:读取博客文章,记录标题,用Htnl格式保存存文章内容
 6 #版本:python2.7.13
 7 #功能:读取网页内容
 8 class 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; WOW64) 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 #正则表达式,获取想要的内容
30 class RePage():
31 #正则表达式提取内容,返回链表
32  def GetReText(self,page,recode):
33         rePage = re.findall(recode,page,re.S)
34  return rePage
35 #保存文本
36 class 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
45 if __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 #获取正文
64        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)

本文分享自微信公众号 - IT派(transfer_3255716726)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 无需深度学习框架,如何从零开始用Python构建神经网络

    动机:为了深入了解深度学习,我决定从零开始构建神经网络,并且不使用类似 Tensorflow 的深度学习库。我相信,对于任何有理想的数据科学家而言,理解神经网络...

    IT派
  • Python使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT。这两个GUI包的底层分别是Tcl/Tk和QT。相比之下,我觉得PyQT使用起来更加方便,功能也相...

    IT派
  • 全面深入理解Python面向对象编程

    面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。

    IT派
  • 用Python爬虫获取自己感兴趣的博客文章

    数据科学社区
  • 用Python爬虫获取自己感兴趣的博客文章

    作者 CDA数据分析师 在CSDN上有很多精彩的技术博客文章,我们可以把它爬取下来,保存在本地磁盘,可以很方便以后阅读和学习,现在我们就用python编写一段...

    CDA数据分析师
  • 计算机网络自学笔记:什么是计算机网络

    计算机网络是计算机专业的王牌核心课程之一,在面试中的重要性不言而喻,年假的这一段时间,重新刷了一遍这门课,其中记录下来一些笔记(当然,抄了书上不少~),分享出来...

    云时之间
  • 第二篇 爬虫技术之HTML

    hello,大家好今天我们继续分享爬虫的相关技术,今天我们分享的是html的基础知识。

    还是牛6504957
  • 可重复读事务隔离级别之 django 解读

    本文尝试结合 django 解释应用开发中并发访问数据库可能会遇到的可重复读引起的问题,希望能帮助大家在开发过程中有效避免类似问题。

    梅海峰
  • “来自星星”的机器人并不是自闭症儿童的“救命稻草”

    “来自星星”的孩子们会有语言障碍、社交障碍。有时候走在路上,张姐的儿子回躺在大街上打滚,导致她被路人当做人贩子,“这是不是你孩子,你别走”。

    用户2908108
  • 原创 | 巨经典论文!推荐系统经典模型Wide & Deep

    今天我们剖析的也是推荐领域的经典论文,叫做Wide & Deep Learning for Recommender Systems。它发表于2016年,作者是G...

    TechFlow-承志

扫码关注云+社区

领取腾讯云代金券