python爬虫入门(博客搬家的实现)
来源:互联网 发布:开户行数据库 编辑:程序博客网 时间:2024/05/16 17:17
python爬虫入门(博客搬家的实现)
python是数据挖掘里最常用的脚本语言之一了,python作为一个很有用的工具,常用来爬取web数据。很无奈,图书馆里的关于爬虫入门的书籍写的都跟渣渣一样,而且大都是以java为主题语言的。刚刚上了网络公开课,打算分享一下如何用python写一个简单的爬虫,我将以爬取我原来的新浪博客的内容为例子来介绍。
其实csdn的博客搬家好像也是类似的,为了让python自动下载新浪博客上的文章。
首先,需要了解新浪博客的HTML格式特点,我先利用chrome浏览器审查元素,查看每篇文章的标题信息。
<pre name="code" class="html"><a title="将博客搬至CSDN" target="_blank" href="http://blog.sina.com.cn/s/blog_7f6d9f7a0102vd6j.html">将博客搬至CSDN</a>如上所示,这是我新浪博客的博文目录里的一篇文章的title的html信息。
简单的分析一下,title里面是对应文章的名字,href后面是对应文章的链接地址。
如此一来,为了让python批处理下载目录里的文章到本地,我们就在一个循环里面寻找博文的链接地址,并存储到url数组中。
然后再用python的库来读取链接网址对应的内容,并保存导出到本地文件。
这样一来,就实现了python自动批处理下载文章。
但是,在处理的过程中发现了几个小问题需要解决,就是中文编码的问题。我是在windows上测试的,所以用python下载下来的文件会出现中文乱码,为了解决这个问题,可以用两个函数来解决
str.decode('utf-8').encode('gbk')str是一个包含中英文的字符串,通过改变它的编码,就可以实现中文正常显示了
还有一个问题就是新浪博客里的html中,文章的title的空格是用 表示的!还有,保存到本地文件的时候,windows文件名不能用标点符号,所以我们就利用replace函数,把这些东西换成空格。
str.replace(' ', ' ').replace(':', ' ')
然后由于文件写入写出是需要时间的,所以我们暂定每次读取文件需要5s
time.sleep(5)
基本思想就是如上所示了,上代码,看代码会更清楚整个爬取的流程,这样一来,就实现了python爬取博客内容,实现博客搬家了!
#SYSU-Software#Dirk Kim#http://blog.csdn.net/luoshengkim?viewmode=contents#coding=utf-8import urllibimport timeurl = ['']*50name = ['']*50con = urllib.urlopen('http://blog.sina.com.cn/s/articlelist_2137890682_0_1.html').read()#下面的代码是寻找博文的链接地址,并存储到url数组中i = 0title = con.find('<a title=')href = con.find('href=', title)html = con.find('.html', href)while title != -1 and href != -1 and html != -1 and i < 50: url[i] = con[href + 6:html +5] print url[i] title = con.find('<a title=', html) href = con.find('href=', title) html = con.find('.html', href) i = i + 1else: print 'find end!' #下面的代是寻找每篇文章的名字 k = 0title = con.find('<a title=')href = con.find('href=', title)while title != -1 and href != -1 and k < 50: name[k] = (con[title + 10:href - 18] + '.html').replace(' ', ' ').replace(':', ' ').decode('utf-8').encode('gbk') print name[k] title = con.find('<a title=', href) href = con.find('href=', title) k = k + 1j = 0while j < 50: content = urllib.urlopen(url[j]).read() open('kim/' + name[j], 'w+').write(content) print 'downloading', url[j] j = j + 1 time.sleep(5)else: print 'Download Completed'
0 0
- python爬虫入门(博客搬家的实现)
- python实现的入门级别死爬虫
- python网络爬虫入门(一)——简单的博客爬虫
- python爬虫的初级入门
- Python:入门到实现网络爬虫 Day1
- Python:入门到实现网络爬虫 Day2
- Python:入门到实现网络爬虫 Day3
- python爬虫二:网易博客的图片
- Python爬虫 | Python爬虫入门
- Python爬虫系列博客
- Python 旅游博客爬虫
- Python爬虫博客
- Python实现简单的爬虫
- Python实现简单的爬虫
- Python实现简单的爬虫
- python--分布式爬虫的实现
- Python简单爬虫的实现
- 博客搬家博客搬家
- Web开发常见错误
- cpu乱序执行
- Android应用的自动升级、更新模块的实现
- 件开发架构师的职责
- 最火Android模拟神器Genymotion之Eclipse插件安装过程
- python爬虫入门(博客搬家的实现)
- hdu 1863 畅通工程 最小生成树模板入门题 prim+kruskal两种算法AC。
- POJ 2677 Tour
- Android被曝存在循环死机漏洞:可删除数据
- 【转】输入/输出流 - 深入理解 Java中的 流 (Stream)
- Leetcode: Multiply Strings
- 【转】输入/输出流 - 全面掌握IO
- 重建二叉树
- JavaScript动画打开半透明提示层