官方数据网站可以使用爬虫软件吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了官方数据网站可以使用爬虫软件吗相关的知识,希望对你有一定的参考价值。
参考技术A 爬虫作为一种计算机技术,具有技术中立性,爬虫技术在法律上从来没有被禁止。爬虫的发展历史可以追溯到 20 年前,搜索引擎、聚合导航、数据分析、人工智能等业务,都需要基于爬虫技术。但是爬虫作为获取数据的技术手段之一,由于部分数据存在敏感性,如果不能甄别哪些数据是可以爬取,哪些会触及红线,可能下一位上新闻的主角就是你。
如何界定爬虫的合法性,目前没有明文规定,但我通过翻阅大量文章、事件、分享、司法案例,我总结出界定的三个关键点:采集途径、采集行为、使用目的。
数据的采集途径
通过什么途径爬取数据,这个是最需要重视的一点。总体来说,未公开、未经许可、且带有敏感信息的数据,不管是通过什么渠道获得,都是一种不合法的行为。
所以在采集这类比较敏感的数据时,最好先查询下相关法律法规,特别是用户个人信息、其他商业平台的信息 等这类信息,寻找一条合适的途径。
个人数据
采集和分析个人信息数据,应该是当下所有互联网都会做的一件事,但是大部分个人数据都是非公开的,想获得必须通过合法途径,可参见『网络安全法』第四十一条:
网络运营者收集、使用个人信息,应当遵循合法、正当、必要的原则,公开收集、使用规则,明示收集、使用信息的目的、方式和范围,并经被收集者同意...
也就是必须在提前告知收集的方式、范围、目的,并经过用户授权或同意后,才能采集使用,也就是我们常见的各种网站与 App 的用户协议中关于信息收集的部分。
相关反面案例:
8月20日,澎湃新闻从绍兴市越城区公安分局获悉,该局日前侦破一起特大流量劫持案,涉案的新三板挂牌公司北京瑞智华胜科技股份有限公司,涉嫌非法窃取用户个人信息30亿条,涉及百度、腾讯、阿里、京东等全国96家互联网公司产品,目前警方已从该公司及其关联公司抓获6名犯罪嫌疑人。
......
北京瑞智华胜公司及其关联公司在与正规运营商合作中,会加入一些非法软件用于清洗流量、获取用户的 cookie。
节选自 澎湃新闻:『新三板挂牌公司涉窃取30亿条个人信息,非法牟利超千万元』[1]
公开数据
从合法公开渠道,并且不明显违背个人信息主体意愿,都没有什么问题。但如果通过破解、侵入等“黑客”手段来获取数据,那也有相关法律等着你:
刑法第二百八十五条第三款规定的“专门用于侵入、非法控制计算机信息系统的程序、工具”:
(一)具有避开或者突破计算机信息系统安全保护措施
爬虫(1)
前段时间,结合日常需要,写了一个小的爬虫项目。这里稍作小结一下。
关于数据来源
信息在哪里?一个地区重要的文化工作,最终都会在该地区文化部门官方网站发布相关信息。
对某个具体使用者来说,并不需要知道网站发布的所有信息。举个例子,自己只对公共文化服务相关信息有兴趣,网站中的其他信息,如文化市场、非物质文化遗产、旅游、文物保护等,对自己来说就不是关注对象。
如何只看自己想看的信息?这可以从查找信息的过程中找出方法。假设,想了解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/
python test.py > msg.txt
python txt2html.py
以上是关于官方数据网站可以使用爬虫软件吗的主要内容,如果未能解决你的问题,请参考以下文章