scrapy+beautifulsoup+mongo数据库简单爬虫——利用搜索关键词爬取百度百科城市地理信息

来源:互联网 发布:pxe网络装机 编辑:程序博客网 时间:2024/06/05 19:47


本文中的内容和代码参考了以下:

http://blog.csdn.net/u010454729/article/details/50900716

http://cuiqingcai.com/912.html

http://zqdevres.qiniucdn.com/data/20160426130231/index.html


本文主要内容是scrapy+beautifulsoup+mongo数据库,快速搭建简单爬虫——利用搜索关键词爬取百度百科城市地理信息,并将结果存入mongo数据库中 。

scrapy是python语言的一个爬虫框架,利用scrapy可以快速的搭建一个爬虫,我们只需要根据自己的需要做一些小的修改就可以爬取信息了。scrapy还支持多线程、分布式。beautifulsoup是用来解析网页的。这里介绍一下利用scrapy写简单爬虫的过程,不涉及多线程和分布式这些内容。

首先安装scrapy

pip install scrapy即可

安装完成后,可以使用pip list 查看一下,如果在显示的列表里面看到scrapy即表示安装成功了,下面就可以开始写爬虫了。

第一步是构建爬虫工程

scrapy startproject tutorial

最后一个是工程的名字,这里是tutorial。可以发现scrapy自动创建了一个tutorial的文件夹,里面已经有一些文件了。我们需要对这些文件进行一些修改就可以了。

第二步在tutorial\目录下的items.py中定义我们要抓取信息的格式。例如我希望抓取百度百科的某个城市页面中的城市名字、位置、气候三个信息。那么items.py中可以写成如下:


第三步在 tutorial\spiders目录下新建自己的爬虫文件,文件名字可以随意(例如我新建的Baike.py),因为scrapy执行的时候是认的文件内设置的name.Baike.py文件中定义了一个爬虫类,类中有两个主要方法,start_requests(self)和parse(self,response)。start_requests(self)方法里放置你要爬取的网址,parse方法里是对爬取到的网页内容解析。在parse方法中会用到之前定义的item,这里需要在文件开头引入定义好的item才可以使用,引用语句是from your_roject_name.items importyour_item。我这里使用了beautifulsoup对网页内容定位和提取,常用的还有xpath等。百度百科的页面比较乱,这里我的处理也比较繁琐,基本思路是先找到页面中的目录,然后根据目录的层级关系提取地理目录下的子目录。提取时,从地理目录开始,如果遇到下一个1级目录则结束。需要注意的是,parse函数中是可以定义将提取到的内容写入文件等操作,但不是必须的。还可以在pipline.py中对提取结果进行处理 。Baike.py详细代码如下:

 

第四步介绍一下piplines.py.这个文件位于tutorial目录下,这里面是对提取结果的操作,可以将提取到的结果保存到json中写入文件,也可以链接数据库将结果写入数据库,我这里是链接mongo数据库,将结果写入mongo数据库中。这里要求本机装了mongo数据库并且已经运行,如果没有安装数据库的话可以将链接数据库的部分注释掉再运行。piplines详细代码如下:


 

第五步在settings.py中进行一些设置。settings.py详细代码如下:


第六步,现在爬虫已经写好了     执行 scrapy crawl baike 

爬虫就可以工作了。抓取到的城市地理信息如下:


 

 

 

 

 

 

 

 

 



 

 

 

 

 

0 0