码迷,mamicode.com
首页 > 其他好文 > 详细

爬虫(1)

时间:2019-03-19 01:38:31      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:保护   相关   html   响应   网站发布   性问题   county   标题   想法   

前段时间,结合日常需要,写了一个小的爬虫项目。这里稍作小结一下。

关于数据来源

信息在哪里?一个地区重要的文化工作,最终都会在该地区文化部门官方网站发布相关信息。

对某个具体使用者来说,并不需要知道网站发布的所有信息。举个例子,自己只对公共文化服务相关信息有兴趣,网站中的其他信息,如文化市场、非物质文化遗产、旅游、文物保护等,对自己来说就不是关注对象。

如何只看自己想看的信息?这可以从查找信息的过程中找出方法。假设,想了解16个市在公共文化服务方面的信息,会怎么做?首先,会打开省文化和旅游厅相关栏目看当前发布的信息;然后,逐个打开每个市网站相关栏目查看。可见,查找信息是一个重复的过程。

一般情况下,涉及重复的过程,大多可以实现自动化。我们的爬虫就是将这个过程自动化。目前,已经初步实现的功能有:

(1)从15个市级文化管理部门网站的指定栏目,自动抓取新闻消息的标题、链接、日期。【这里为什么是15个市?因为合肥市局网站信息比较难抓。百度搜索实现了针对该网站的信息抓取,必应搜索、搜狗搜索等未实现。】

(2)将收集到的信息,保存成数据文件,并据此生成网页。

(3)将生成的网页,利用微信发给指定朋友或自己,这里也可以使用linux下的mail程序,发送到指定邮箱。

关于总体设计

实际上,这个项目一开始时,自己并没有非常明确的总体设计,现在看到目录结构,是在基本功能完成以后逐渐整理得来的,编写时随意性较大,基本是想到什么功能就写到哪里,发现不对时,就对代码进行重构。

├── city_lv
│?? ├── __init__.py
│?? ├── luanweb.py
│?? ├── maanshanweb.py
│?? └── xuanchengweb.py
├── county_lv
│?? ├── changfengweb.py
│?? └── __init__.py
├── libraries
│?? ├── ahslibweb.py
│?? └── __init__.py
├── LICENSE
├── province_lv
│?? ├── anhuiweb.py
│?? └── __init__.py
├── README.md
├── templates
│?? ├── base.html
├── tests
│?? ├── index.html
│?? ├── msg.txt
│?? ├── send_msg.py
│?? ├── send.sh
│?? ├── test.py
│?? └── txt2html.py
└── utils
    └── webmonkey.py

虽然没有什么明确应该是什么样的,但对项目的核心功能相对清楚,就是从各个文化机构的网站抓取信息。

具体实现时,每个数据源对应一个独立的爬虫程序,然后在一个总的调度程序中循环调用。

关于爬虫框架

这里没有使用现成的爬虫框架,如scrapy,只是针对需求,封装了一个非常简单的类。

为了减少程序中的重复代码,在编写过程中,经过几次重构,自己封装了一个类webmonkey.py,用于处理抓取时一些共同操作,包括打开网站、返回一个包括网站源码的响应对象、显示抓取到的信息等。

针对每个具体网站,编写了Web类,继承自通用类webmonkey。在其基础上,改动网站url和网页信息提取规则。

关于数据保存

程序中没有实现数据保存的功能,而是利用操作系统提供的管道(“|”)命令,将程序输出到本地文件进行保存。

在数据量比较小的情况下,或用于演示时,用这种方法还可以。如果考虑长期运行,肯定需要使用数据库。但是,这个问题不是很大,自己在另外一个小项目中已经封装过一个sqlite3的类,需要时可以拿过来改改。

关于数据展示

为了展示抓取信息,写了一个网页生成的模块txt2html.py。基本的想法是,先写一个网页模板,然后在这个模板基础上,将抓取的信息写入网页文件。另外,还写了一个模块,可以将HTML文件通过微信发送给自己。

未解决问题

现在还有几个问题没有解决。第一,第一条信息问题。部分站点同一天会更新多条信息,目前只是抓取各网站相应栏目的第一条信息。第二,接着第一个问题而来的是数据量大了之后的数据存储问题。第三,网页设计问题。第四,通用性问题。

使用方法

git clone http://github.com/luckyele/socnews.git

cd socnews/tests/

  1. python test.py > msg.txt

  2. python txt2html.py

爬虫(1)

标签:保护   相关   html   响应   网站发布   性问题   county   标题   想法   

原文地址:https://www.cnblogs.com/py520ziyi/p/10556044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!