python新浪博客爬虫(纯自己写)

编程入门 行业动态 更新时间:2024-10-14 02:19:06

python新浪博客<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫(纯自己写)"/>

python新浪博客爬虫(纯自己写)

python新浪博客爬虫(纯自己写)

一直在学习javaweb方面的知识,什么J2SE,ssh框架,tomcat,学的累了。突然想学习一门脚本语言,虽然js也会点,就是不怎么熟练。感觉Python挺有意思的,就花了两天学习了下,还知道可以比较方便的用来编写网络爬虫,觉得很有意思,所以就觉得自己编写一个,花了一晚上时间写了一个从新浪博客上爬韩寒文章的爬虫。自己编写的,洗的不好的地方,请指出,大家一起讨论。 直接贴出代码,每个函数上面都是注释,很容易看懂的。


 __auyhor__='sw'                                                                                                                              # -*- coding:utf-8 -*-import urllib2import urllibimport toolsimport reimport osimport sysreload(sys)sys.setdefaultencoding('utf8')class Weibo:def __init__(self):self.tool = tools.Tool()#得到文章列表第一面的内容def getArticlePage(self,url):request = urllib2.Request(url)response = urllib2.urlopen(request)return response.read().decode('utf-8').encode('gbk').decode('gbk')#得到列表第一面中所有链接信息def getLink(self,url):page = self.getArticlePage(url);pattern = repile('<span.*?class="atc_title">.*?<a.*?href="(.*?)".*?>(.*?)</a>',re.S)items = re.findall(pattern,page)contents = []for item in items:contents.append([item[0],item[1]])return contents#通过URL得到文章内容def getArticleDetail(self,ArticleUrl):request = urllib2.Request(ArticleUrl)response = urllib2.urlopen(request)content = response.read()return content#通过内容筛选出文章并且保存起来def saveArticle(self,content,name,path):pattern = repile('<div id="sina_keyword_ad_area2" class="articalContent   ">(.*?)</div>',re.S)result = re.search(pattern,content).group(1)result = self.tool.replace(result)fileName = path + "/" + name + ".txt"f = open(fileName,"w+")print u"正在下载文章",namef.write(result.encode('utf-8'))f.close()#从第一页中得到所有的列表页面链接def getPageLink(self,url):page = self.getArticlePage(url)pattern = repile('<li>.*?<a.*?href="(.*?)".*?>.*?</li>',re.S)result = re.findall(pattern,page)return result#创建新目录def mkdir(self,path):path = path.strip()isExits = os.path.exists(path)if not isExits:print u"创建了新的文件夹叫做",pathos.makedirs(path)return Trueelse:print u"名为",path,"的文件夹已经创建成功"return False#通过url下载文章def downloadByURL(self,url,i):contents = self.getLink(url)path = "第"+str(i)+"页"self.mkdir(path)for item in contents:content = self.getArticleDetail(item[0])self.saveArticle(content,item[1],path)def main(self):url = '.html'i = 1self.downloadByURL(url,i)pageUrl = self.getPageLink(url)for URL in pageUrl:i = i + 1self.downloadByURL(URL,i)print """----------------------------------------------------------------------时间:2015.5.21 星期四作者:sw版本:0.1python版本:2.7.3功能:新浪博客爬虫,抓取韩寒博客里面所有的文章存到本地为.txt文档,用文章    的标题作为文档的名称,每一页存为一个文件夹操作:直接运行即可-----------------------------------------------------------------------"""weibo = Weibo()weibo.main()    

还有一个工具类,主要是除去文章中多余的链接,换行之类的
 __author__='sw'                                                                                                                              # -*- coding:utf-8 -*-import reclass Tool:removeImg = repile('<img.*?>| {1,7}| ')removeAddr = repile('<a.*?>|</a>')replaceLine = repile('<tr>|<div>|</div>|</p>')replaceBR = repile('<br><br>|<br>')removeExtraTag = repile('<.*?>')removeNoneLine = repile('\n+')def replace(self,x):x = re.sub(self.removeImg,"",x)x = re.sub(self.removeAddr,"",x)x = re.sub(self.replaceLine,"\n",x)x = re.sub(self.replaceBR,"\n",x)x = re.sub(self.removeExtraTag,"",x)x = re.sub(self.removeNoneLine,"\n",x)return x.strip()     

事实上有的地方还是可以改进的,现在只是爬取韩寒博客的文章,下一个版本可以输入一个博客的网址,从输入的网址中爬取文章,有时间再改进改进吧。

更多推荐

python新浪博客爬虫(纯自己写)

本文发布于:2024-03-09 17:22:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725586.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   新浪   博客   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!