发布时间:2020-03-10 16:55:51
一、绪论
1.1课题背景
截至2017年12月,中国网页数已超过2600亿个[1],全球网页数量已超过40万亿个[2],重要数据很容易沉没于互联网之海。人工采集数据的方法已经不能满足快速获取有效信息的需求。
1.2研究现状及发展前景
1.2.1网络爬虫的研究现状
支持网络通信的编程语言均可以编写网络爬虫,Python因为有大量优秀的爬虫库,代码简洁易懂,在网络爬虫领域有着广泛的应用。
1.2.2网络爬虫的发展前景
网络爬虫可用于采集机器学习数据样本、分析实体之间的互动关系、还原用户消费场景、建立搜索引擎、进行实时舆情监控等任务,使用爬虫批量获取信息将会是未来访问互联网的趋势。
1.3关键技术介绍
网络爬虫:又被称为网络蜘蛛(spider),是用来自动浏览、采集网页数据的计算机程序[3]爬虫主要分为通用爬虫、定向爬虫两大类。定向爬虫预先规则进行抓取指定URL,用来采集特定领域的数据。
Python:开源的计算机编程语言,强大而高效,非常容易上手。Python拥有海量的第三方库,在Web开发、系统编程、科学计算、人工智能、网络安全等领域有着广泛地应用。[4]代理:是特殊的网络服务,在用户终端和网络间增设代理服务器,有利于提高网络访问速度、突破限制、避免攻击,广泛应用与信息安全领域。[5]
Scrapy:使用Python编程语言开发的开源网络爬虫框架。广泛用于数据监测、自动化测试和信息挖掘等领域。
ECharts:百度公司开发的JavaScript库[8]。pyecharts是ECharts的Python实现,可以提供界面优美的、可交互的数据可视化图表。
二、系统设计
2.1功能模块
该爬虫基于Scrapy爬虫框架,由Engine、Downloader、
Scheduler、Downloader Middleware、Spider、Item Pipelines、Spider Middleware七个部分组成。其中Engine、Scheduler、
Downloader是已有实现,不必编写(配置)。[9]2.2数据库设计
Python编程语言中内置了SQLite数据库,可以通过Python的sqlite3库直接对SQLite数据库进行增删改查,不需要进行额外的安装配置。
根据抓取到的数据,在SQLite数据库中创建ip,port,position,about_anonymous,type共5个字段,设置ip,port,type三个字段为联合主键。三、详细设计
3.1创建爬虫
在终端中执行scrapy startproject Proxy_IP,即可在当前
目录下创建Proxy_IP Scrapy爬虫工程。
在终端中执行scrapy genspider T www.neatchange.com,可在./spider/路径下使用Scrapy默认模板创建名为T,start_ urls为www.neatchange.com的爬虫。
3.2 Settings
Settings是爬虫的配置文件,可以自行添加相关配置参数。配置项目包含但不限于爬虫项目名称、robots协议、开启线程、UserAgent、cookie、爬取延迟。
3.2.1 robot协议
该爬虫模拟浏览器进行采集,不会对服务器造成显著压力,且采集到的数据仅用于学术研究,因此可以绕过Robots协议。
ROBOTSTXT_OBEY=False
#关闭了robot限制
3.2.2多线程
IO密集型项目使用多线程,可以提高机器的利用效率,
Scrapy自带twisted线程池,可以按照下面格式进行配置:
CONCURRENT_REQUESTS=2#开启了2个线程
3.2.3爬取延迟
为降低目标网站的负载,选取服务器压力较小的时候进
般为雨季前)测量接地装置的接地电阻是否满足要求;机房求各运营服务商不断地进行技术革新,电子技术的高度发展设备检修或更换后,应检查接地线连接是否牢固可靠;检查必须要有先进的与之匹配的接地技术为基础。没有先进的接设备、强弱电桥架与接地线连接、接地线与接地铜排连接是地技术,就不能保护先进的电子技术。接地技术的发展必定否完好等。推动通信行业电子应用技术的发展,重视接地是时代发展的随着消费者对通信服务行业消费需求不断提高,势必要需求。
35
互联网+通信nternet Communication行数据采集,并且设置延迟:DOWNLOAD_DELAY=1#设置爬取延迟为1秒
3.3爬虫T
3.3.1 T.py
爬虫T,用来采集代理IP数据,是整个爬虫框架的核心单元。其中name用于区别Spider,该名字必须是唯一的。
Items定义了爬虫的抓取项,是用来保存爬取到数据的容器。由Spider生成,由Item Piplines进行处理。
3.3.2 Xpath
Xpath是定位网页元素的一种方式。此爬虫通过Xpath确定网页中各元素的位置。
3.3.3生成器
相对于Python中的list,generator有节省存储空间、使用灵活、响应速度快等优点,因此该爬虫通过生成器来返回抓取到的每一条代理IP信息。
3.4数据处理
通过sqlite3初始化一个数据库,构造SQL语句创建Proxy_IP表。
以写方式(w)创建一个名为Proxy_IP.csv的文件,起别名为f,逐行读取数据库中的所有内容。以只读的方式打开CSV文件,用split()函数分割CSV文件中的数据,构造SQL语句后即可插入数据库。
3.5数据可视化
此爬虫使用Python第三方库pyecharts,根据SQLite中的数据渲染地理位置分布图。
选取了全国重要的288个城市进行统计展示,因此最终生成的可视化页面中共有288个可视化点。将各个城市的初始值设为0,写入list_value中,用zip函数将list_cities和list_value合并为字典。GEO是ECharts的地理坐标系组件,可以在地理坐标系上绘制散点图和线集,爬虫通过GEO生成中国代理IP位置分布图。
四、运行结果4.1运行环境
硬件:此爬虫对硬件资源无特殊要求,普通计算机即可运行。
软件:需要安装配置Python3解释器、Scrapy库、pyecharts库。
4.2数据可视化页面
不同颜色表示各个城市的代理IP数量(抓取到的数量)。可视化页面整体可以拖动、缩放。光标移动到信息点上可以展示城市的经纬度、代理IP数量,移开后自动恢复原状。可以通过左下角的滑块根据IP数量多少动态调整显示的信息点。
大客户
微信
置顶