<>一、简介


平常我们查看新闻、资讯都是通过相关软件获取的,有时候推送给我们的新闻、资讯并不是我们所要关注的,特别是对做投资的人来说,每天需要关注的信息量很大,国家政策、市场信息、监管新闻、央行动作等等,当然如果一个个网站去打开当然可以实现目的,但是随着关注面越来越广,这个过程既费时又不一定满足需求,笔者之前看李笑来老师的文章中提到,笑来老师很久之前就实现资讯定制化功能了,就是把自己需要关注的信息、网站通过爬虫维护起来,每天一打开电脑,这些信息通过爬虫自动完成收集工作,我们要做的就是基于某些个别信息深入查看下,基于这个思路,笔者尝试做一个爬取政府网(
www.gov.cn <http://www.gov.cn>)上政策栏目下面的信息,其他网站也类似。

<>二、环境准备

本项目所有的代码都已经存放到github上了,感兴趣的读者可以到github
<https://github.com/xianba/Jesus/tree/master/Software/info_crawler>上获取。

*
这里我们选择的python环境下的scrapy框架,通过pip install scrapy
安装scrapy,然后在pycharm命令行中创建资讯项目info_crawler,如下:


*
在项目的spiders目录下我们需要建立一个资讯爬取的主程序info_spider.py,主要定义爬取的网站和需要抓取的数据,文件内容如下:


需要注意的是name和response.css和response.xpath这几个关键地方,name在启动的时候需要指定正确,否则会找不到相应爬虫,response.css和response.xpath是从网站中去获取所需要的数据。


通过政府网的观察,我们可以看到在政策专栏下面,所有的政策资讯都在ul标签下,每个资讯对应一个li,所以通过css选择器,我们先选择class='h120’的ul,然后再遍历其下的li元素,最终通过text获取li中的内容。

*
在settings.py文件同目录下创建main.py文件,我们可以通过这个文件调用scrapy程序执行,而不用通过命令行去实现。命令行下执行是这样的:
scrapy runspider xxx_spider.py -o xxx.json
,如果通过main.py文件来实现,只要把相关参数存放进去就可以了,具体内容如下:

第3个参数就是刚才在info_spider.py定义的name。

*

配置数据存储文件,我们通过爬虫抓取到的数据最终是持久化到本地的,也就是说要找个地方把数据保存下来,一般就是写入数据库或者文件,笔者这里是采用文件的方式,所以需要在pipelines.py文件中配置相应的信息,代码如下:


*
配置settings.py <http://xn--settings-vz2ve12k.py>
,跟scrapy相关的所有配置几乎都可以在settings.py中配置,我们这里主要配置两个参数。
5.1
DEFAULT_REQUEST_HEADERS:头文件,因为有的时候我们爬取网站的信息要像浏览器发送请求一样,才能获取到我们需要的信息,我们这里的操作只要打开相应的注释就可以了。
5.2
ITEM_PIPELINES:刚才在pipelines.py文件中我们配置了数据的保存方式,接下来我们需要在settings.py文件中打开这个开关才能生效,最终配置的效果如下:


*
执行main.py文件,上面的文件配置好之后,右键执行爬虫程序,如下:

控制台输出的信息如下:


执行完之后,我们可以看到在同目录下生成一个info_file.json文件

里面保存的内容如下,跟政府网上政策栏目下七条资讯刚好对应:


<>三、遗留问题

*
20190522:重定向问题,像政府网没有重定向问题,我们可以抓取到其网页内容,但是像央行、证监会网站存在大量的重定向,这个时候通过scrapy爬取不到网页信息?(可以通过requests.get(url).text查看网页爬取的内容。)
参考文献
1.Github代码库
<https://github.com/xianba/Jesus/tree/master/Software/info_crawler>
2.scrapy官网 <https://scrapy.org/>
3.Scrapy爬虫入门教程一 安装和基本使用 <https://www.jianshu.com/p/43029ea38251>
4.Python爬虫学习8-css选择器使用 <https://www.jianshu.com/p/e605930e8774>
5.Python爬虫(17)在Windows中安装及使用Scrapy <https://www.jianshu.com/p/4fc7ad88996d>
6.python爬虫:scrapy框架xpath和css选择器语法
<https://blog.csdn.net/mouday/article/details/80455560>