您的位置:首页 > 代理IP资讯
发布时间:2019-11-14 16:39:45
Python爬虫代理IP定向采集的设计与实现


一、绪论

1.1 课题背景

截至 2017  12 月,中国网页数已超过 2600 亿个 全球网页数量已超过 40 万亿个 [2],重要数据很容易沉没于互联网之海。人工采集数据的方法已经不能满足快速获取有  效信息的需求。

1.2 研究现状及发展前景

1.2.1 网络爬虫的研究现状

支持网络通信的编程语言均可以编写网络爬虫,Python因为有大量优秀的爬虫库,代码简洁易懂,在网络爬虫领域有着广泛的应用。

1.2.2 网络爬虫的发展前景

网络爬虫可用于采集机器学习数据样本、分析实体之间的互动关系、还原用户消费场景、建立搜索引擎、进行实时舆情监控等任务,使用爬虫批量获取信息将会是未来访问互联网的趋势。

1.3 关键技术介绍

网络爬虫:又被称为网络蜘蛛 (spider), 是用来自动浏览、采集网页数据的计算机程序 [3] 爬虫主要分为通用爬虫、定向爬虫两大类。定向爬虫预先规则进行抓取指定 URL,用来采集特定领域的数据。

Python:开源的计算机编程语言,强大而高效,非常容易上手。Python 拥有海量的第三方库,在Web 开发、系统编程、科学计算、人工智能、网络安全等领域有着广泛地应用。[4]

代理:是特殊的网络服务,在用户终端和网络间增设代理服务器,有利于提高网络访问速度、突破限制、避免攻击, 广泛应用与信息安全领域。[5]

Scrapy:使用 Python 编程语言开发的开源网络爬虫框架

[6]。广泛用于数据监测、自动化测试和信息挖掘等领域。

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  可在 ./spider/ 路径下使用 Scrapy 默认模板创建名为 T,start_ urls  http://www.feizhuip.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


I 互联网 + 通信 

 


行数据采集,并且设置延迟: 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 数量多少动态调整显示的信息点。


 


下一篇