推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python的多线程聚焦网络爬虫设计与实现

更新时间:2019-12-24 06:15:53 大小:1M 上传用户:songhuahua查看TA发布的资源 标签:python网络爬虫 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

在大数据时代下,人们要想从大量数据中找到自己需要的信息变得越来越困难,因此使用网络爬虫处理网络中大量的信息成为了必不可少的方法.本文利用Python语言设计并实现了一种多线程聚焦网络爬虫.首先,通过聚焦爬虫,获取目标网站数据,然后建立相应索引数据库.在爬取数据库的基础上,用户可以通过输入关键字,从多个网络地址URL中获取大量用户所需要的数据.


部分文件列表

文件名 大小
基于Python的多线程聚焦网络爬虫设计与实现.pdf 1M

部分页面预览

(完整内容请下载后查看)
2019  
№. 6  
Nov. 2019  
年
赣 南 师 范 大 学 学 报  
Journal of Gannan Normal University  
第六期  
·
·
算法设计与应用  
Python  
基于  
的多线程  
*
聚焦网络爬虫设计与实现  
a
b,  
b
, ,  
王美芝 支学超 刘财辉  
(
a.  
赣南师范大学 体育学院  
; b.  
,
数学与计算机科学学院 江西 赣州  
341000)  
:
,
,
摘
要 在大数据时代下 人们要想从大量数据中找到自己需要的信息变得越来越困难 因此使用网络爬虫处  
Python ,  
语言设计并实现了一种多线程聚焦网络爬虫 首先  
.
.
理网络中大量的信息成为了必不可少的方法 本文利用  
, , . ,  
通过聚焦爬虫 获取目标网站数据 然后建立相应索引数据库 在爬取数据库的基础上 用户可以通过输入关键字  
,
URL  
.
从多个网络地址  
: Python;  
关键词  
中获取大量用户所需要的数据  
URL;  
多线程  
;
网络爬虫 网络地址  
: TP393  
: A  
: 1004 - 8332( 2019) 06 - 0035 - 04  
文章编号  
中图分类号  
文献标志码  
1
引言  
, .  
网络爬虫作为一种工具 被广泛应用于人们自动地在互联网中进行数据信息的采集与整理 在大数据时  
,
代 对特定数据爬取的爬虫的需求也越来越大  
.
, ,  
聚焦爬虫是一个自动下载网页的程序 它根据既定的抓取目标 有选择的访问万维网上的网页与相关的  
, .  
链接 获取所需要的信息 与通用爬虫  
( general purpose web crawler)  
, ,  
不同 聚焦爬虫并不追求大的覆盖 而将  
[1]  
,
目标定为抓取与某一特定关键词内容相关的网页 为面向关键词的用户查询准备数据资源  
.
, ,  
理论上 任何一种支持网络通信的语言都可以用来编写网络爬虫 目前大多数网络爬虫程序是用后台  
,
脚本语言来编写 其中  
Python  
,
是最为广泛使用的一种语言 其具有丰富和强大的标准库供用户选择使  
[1 - 3]  
[4]  
.
、
.
,
1
.
用
网络爬虫由多个控制节点 爬虫节点以及资源库构成 它们之间的结构关系 如图 所示  
研究现状  
最早的时候是在  
1. 1  
20  
90  
年代出现了搜索引擎以及  
世纪  
.
随之产生的网络爬虫 此时出现的爬虫在爬取整个网络的  
.
时候一般采取了深度或广度优先的遍历方式 作为搜索引  
,
擎的信息资源采集的重要角色 网络爬虫的性能将直接影  
[2]  
、
响整个搜索引擎索引网页的数量 质量和更新周期  
.
于
、 、  
是出现后面的分布式网络爬虫 增量式网络爬虫 深层网络  
. 3  
爬虫以及聚焦网络爬虫 聚焦网络爬虫主要有 个代表性  
: ;  
的方法 ①基于分类器的聚焦爬虫 ②基于数据抽取器的网  
; .  
络爬虫 ③基于用户学习的网络爬虫 其中主要用于以下几  
1
图
爬虫结构关系图  
: ( 1) ; ( 2)  
类研究  
题的描述和定义  
1. 2  
面向数据分析和挖掘的爬虫技术研究  
主
; ( 3)  
; ( 4) Web  
; ( 5)  
.
相关资源的发现  
数据清洗  
抓取目标空间的管理等  
多线程的优缺点  
,
我们在聚焦网络爬虫的基础上 采用多线程方法能够同时对多个  
URL  
,
地址进行爬取工作 大大提升了  
CPU  
, ,  
的使用率 较完美地解决了单一聚焦网络爬虫对多个网址依次爬取的局限性 但同时采用多线程会使  
.
主机的各个任务必须等待外部资源的释放以及有可能会发生线程死锁  
*
: 2019 - 08 - 20  
DOI: 10. 13698 /j. cnki. cn36 - 1346 /c. 2019. 06. 009  
( 61663002)  
收稿日期  
:
基金项目 国家自然科学基金项目  
:
作者简介 王美芝  
( 1984 - ) , , , : .  
女 赣南师范大学体育学院讲师 研究方向 智能信息处理技术在体育中的应用  
:
通讯作者 支学超  
( 1998 - ) , , ,  
男 江西抚州人 赣南师范大学数学与计算机科学学院  
2015  
, :  
级本科生 研究方向 数据处理  
.
36  
2019  
年
赣南师范大学学报  
2
爬虫设计与实现  
2. 1  
爬取的数据和目标网址  
2 : ,  
本爬虫的目标网址有 个 一个是搜狗微信的文章搜索 地址是  
http: / /weixin. sogou. com,  
另外一个是搜  
,
狗知乎的问题和回答搜索 地址是  
http: / /zhihu. sogou. com.  
keyword 2  
使用这 个网址进行  
本爬虫通过关键字  
, ,  
检索 将搜索结果的页面网址的内容保存到本地文件中 集中阅读  
.
2. 2  
程序调用的模块以及各模块的介绍  
8 ,  
本爬虫一共调用了 种模块 分别为  
:
( 1) re Python  
模块使  
( 2) urllib. request  
,
程序能够识别正则表达式 可以直接调用来实现正则匹配  
;
,
模块为请求模块 提供了最基本的构造  
HTTP(  
FTP)  
,
请求的方法 利用该  
或其他协议如  
URL  
.
模块可以模拟浏览器的一个请求发送的过程 利用不同的协议去获取  
;
信息  
( 3) urllib. error  
,
模块是异常处理模块 能够捕获异常  
;
( 4) time  
, ,  
模块是时间模块 用于创建进程的睡眠时间 可以使  
Python  
;
程序按照用户需求来定时执行程序  
( 5) threading  
( 6) queue  
, Python  
模块是多线程模块 使  
,
程序具有多线程功能 可以使多个线程同时运行  
;
Python  
,
URL  
;
地址  
模块可以给  
模块可以使我们的爬虫获得安全证明 使爬虫能够畅通无阻地访问网站  
( 8) pymysql Python3  
程序创建队列 用与存放爬取到的  
( 7) ssl  
,
;
,
中的数据库模块 通过  
模块是  
,
调用该模块 可以连接数据库 并通过编写数据库语句  
,
,
.
使程序能够对数据库进行操作  
2
其工作原理如图 所示  
.
6
以下为爬虫在爬取过程中使用到的 条正则表达式  
:
①通过阅读搜狗微信的网页源代码编写获取微信  
: < div class = " txt - box" > .  
文章网址的正则表达式为  
* ? ( http: / /. * ?) "  
②通过阅读搜狗知乎的网页源代码编写获取知乎  
: < div class = " result - about  
问题网址的正则表达式为  
2
图
爬虫各模块工作数据流图  
- list" > . * ? ( https: / /. * ?) " .  
: < title > ( . * ?) < /title > .  
③以及微信文章页面的标题的正则表达式  
: id = " js_content" > ( . * ?) id = " js_sg_bar" .  
④微信文章页面的内容的正则表达式  
: < title data - react - helmet = " true" > ( . * ?) < /title > .  
⑤知乎页面的问题的正则表达式  
⑥知乎页面问题的网友的回答的正则表达式  
Content - inner" > ( . * ?) < /div > .  
: < div class = " Rich-  
2. 3  
数据库设计  
3
该数据库使用了 个元素  
,ID、  
标题  
title、URL  
. E - R  
地址 图如图  
3
.
所示  
3
E - R  
图
图
4 ,  
如图 所示 为数据库表中各个元素的属性  
:
4
图
元素的属性  
、
爬虫中创建 连接数据库的部分代码如下  
:
mysql_host = '127. 0. 0. 1'  
mysql_db = 'sys'  
mysql_user = 'root'  
mysql_password = 'zxcssg1998'  
mysql_port = 3306 db = pymysql. connect( host = mysql_host,port = mysql_port,user = mysql_user,password  
= mysql_password,db = mysql_db,charset = 'utf8')  
sql_create = " CREATE TABLE MYURL( id CHAR( 10) ,title CHAR( 50) ,url VARCHAR( 265) ) " #  
在数据  
库下创建表  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载