一个简单的python爬虫程序

周四的时候高中同学拜托我写个爬虫程序,用来抓取新浪搜索到的新闻条数,正好我也要学习一下如何自己写一个爬虫,于是便同意了。

一、需求:

同学是学管理的,她的要求是给很多关键词,针对每个关键词去新浪搜索,搜索的要求是按标题检索,同时要对2006年1月至2013年2月的每个月都检索一次,保存检索结果的数目到文件中。比如 关键词是 用友软件,写到文件中应该如下:

用友软件  16  23  67  19  78 ……

文件中每一行是一个关键词对应的检索结果,后面是2006年1月的搜索结果数目,依次直到2013年2月。

为了方便运行,我在她的需求上做出了改进,让文件中的空都用t隔开便于txt导成excel格式,同时,让输入为从文件输入,每一行为一个关键词,这样只需要写输入文件,运行程序,等待结果输出,最后导入excel即可。

二、实现:

提到爬虫,很多人第一反应就是python,因为python库很多,简单的几个函数就能搞定,代码行数也少。之前我在公司实习的时候见证过JAVA编写的爬虫,不过由于我对JAVA不感冒而且JAVA写爬虫还是要复杂一些,最终我还是选择用python来写。下面来说说步骤:

1、安装python

我的系统是win7,这里推荐一个 址ActivePython http://www.activestate.com/activepython 直接下载安装即可

2、分析 页的html格式

爬虫要抓取的就是html中的数据,自然需要定位到需要抓取的位置,同学给我的要求是抓取搜索结果,在chrome下分析得到的结果如下:

一个简单的python爬虫程序

上图中的“ 2005”  就是我需要的数据。

3、编写代码

python抓取 页需要一个很重要的库 urllib2, 至于别人说的beautifulsoup ,pyquery这些库其实并不需要,在定位要抓取的数据时用正则表达式(对应于re库)就可,正则表达式寻找匹配的速度应该来说是最快的。有了这两个库,其他的就是一些逻辑处理,文件读写的操作,没有多少难度。最终的代码如下:

这里输入文件为input.txt, 注意python的编码有时存在问题,所以input.txt的编码格式要保存为GB2312(在notepad++下选择ANSI编码即可)

input.txt文件:

output.txt文件:

总结:写了这么一个程序,让我对python又有了更进一步的了解,如今很多数据都需要借助于爬虫这个工具,强大的python外加正则表达式基本能满足任何的需要。最后感想老大的指点,相信我的那位高中同学会感到满意的。

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树 络爬虫urllib211387 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年2月6日
下一篇 2013年2月6日

相关推荐