推荐星级:
- 1
- 2
- 3
- 4
- 5
基于Linux的python多线程爬虫程序设计
资料介绍
微博作为国内最受欢迎的社交平台,海量的微博数据必然包含丰富的知识资源。如何获取这些非结构化的数据,是进行微博数据挖掘的基础。根据微博网页的特点,提出了一种基于Linux的python多线程爬虫程序设计方法,通过模拟登录新浪微博,自动获取网页内容,再从网页内容中抽取微博和用户数据,以结构化的CSV数据格式存储或存入MySQL数据库,从而获取微博海量数据和用户信息。通过和基于开放API的爬虫程序进行比较,结果表明,从较长时间考虑,基于Linux的python多线程爬虫程序拥有更加优异的性能。
部分文件列表
文件名 | 大小 |
基于Linux的python多线程爬虫程序设计.pdf | 1M |
部分页面预览
(完整内容请下载后查看)总第
期
307
计算机与数字工程
Vol.43No.5
861
ꢀ
Com uter& DiitalEnineerin
ꢀ ꢀ g
p g g
年第
期
5
2015
*
基于
的
多线程爬虫程序设计
Linux
thon
py
李俊丽
(
)
晋中学院信息技术与工程学院 晋中
ꢀ
030619
ꢀ
, 。
微博作为国内最受欢迎的社交平台 海量的微博数据必然包含丰富的知识资源 如何获取这些非结构化的数
ꢀ
摘
要
ꢀ
, 。 ,
据 是进行微博数据挖掘的基础 根据微博网页的特点 提出了一种基于
,
多线程爬虫程序设计方法 通过
thon
py
的
Linux
, , ,
模拟登录新浪微博 自动 获 取 网 页 内 容 再 从 网 页 内 容 中 抽 取 微 博 和 用 户 数 据 以 结 构 化 的
数 据 格 式 存 储 或 存 入
CSV
, 。
数据库 从而获取微博海量数据和用户信息 通过和基于开放
, ,
的爬虫程序进行比较 结果表明 从较长时间考
API
M SQL
y
,
虑 基于
。
多线程爬虫程序拥有更加优异的性能
thon
py
的
Linux
; ;
关键词 微博网页 网络爬虫 模拟登录
ꢀ
:
DOI10.3969 .issn16729722.2015.05.026
-
/
中图分类号
TP301
ꢀ
ꢀꢀ
j
PthonMultithreadin WebCrawlerProramBasedonLinux
ꢀ ꢀ
g
ꢀ
ꢀ
ꢀ ꢀ
y
g
LIJunli
ꢀ
(
, ,
SchoolofInformationTechnolo andEnineerin Jinzhon Collee Jinzhon 030619
ꢀ g
)
ꢀ ꢀ
ꢀ
gy
ꢀ
g
g
ꢀ
g
gꢀ
Abstract Microblo isoneofthecountrsmost oularsocialnetworkin latform.Vastamountsofmicroblo data
g ꢀ ꢀ ꢀ y ꢀ ꢀpp gp
ꢀ ꢀ ꢀ ꢀ ꢀ ꢀ ꢀ
g
ꢀ
ꢀ
ꢀ
,
mustcontainrichintellectualresources.Howto ettheseunstructureddata itisthebasisofmicroblo dataminin .Ac
ꢀ ꢀg ꢀ ꢀ ꢀ ꢀ ꢀ -
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
g
ꢀ
ꢀ
g
,
cordin tothecharacteristicsofthemicroblo in site this aer roosesa thonmultithreadin crawlersmethodbased
gg g
ꢀ ꢀ ꢀpp ꢀp p ꢀꢀpy
g
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
g
ꢀ
ꢀ
ꢀ
ꢀ
,
,
,
onLinux b simulatin theloinofmicroblo obtainin webcontentautomaticall andthenextractin microblo anduser
ꢀ g ꢀ ꢀ
y
ꢀ
y
ꢀ
g
ꢀ
g
g
ꢀ
ꢀ
ꢀ
ꢀ
ꢀ
g
ꢀ
g
ꢀ
ꢀ
datafromtheweb aecontent.ThusCSVdatainastructuredformatisstoredordeositedinthe M SQLdatabaseand
ꢀ ꢀpgꢀ ꢀ ꢀ ꢀ ꢀꢀ ꢀ ꢀ ꢀ ꢀ ꢀ p ꢀ ꢀ ꢀ y ꢀ
ꢀ
ꢀ
ꢀ
,
thenhueamountsofmicroblo dataanduserinformationisacuired.Throuhcom arin withcrawlersbasedonoenAPI
gꢀ
ꢀ gꢀ ꢀ ꢀ ꢀ ꢀ ꢀ ꢀꢀ q ꢀ ꢀ ꢀ ꢀp
g
ꢀ
p
g
ꢀ
ꢀ
,
theresultsshowthatfromalon timeconsideration
ꢀ ꢀ ꢀ ꢀ ꢀꢀ ꢀ
thon multithreadin crawlersbasedonLinuxhavemoreexcellent
g
ꢀ ꢀ ꢀ ꢀ ꢀ ꢀ ꢀ
ꢀ
g
ꢀ
py
erformance.
p
,
,
Ke Words microblo ae webcrawler simulatin loin
gpg
ꢀ
ꢀ
g g
ꢀ
y
ꢀ
ꢀ
ClassNumber TP301
ꢀ ꢀ
引言
1
ꢀ
相关概念
2
ꢀ
,“ ”
互联网时 代 的 信 息 爆 炸 大 数 据 时 代 的 到
网络爬虫
2.1
ꢀ
[]
9
(
, 。
来 大量的网络信息中包含丰富的知识宝藏 社交
),
网络爬虫
是一个非常强大
WebCrawler
ꢀ
[]
1
,
网络 已经成为网络信息平台的代表 其用户数据
,
网页的应用程序 它为搜索引擎
的自动提取
Web
[]
2
。
极其有价值 而新浪微博 作为国内最受欢迎的
,
页面 是搜索引擎的重要组
从互联网上下载
Web
, 、
社交网络平台 具有很好的及时性 发布信息快速
,
。
成部分 爬虫从一个或多个初始页面的
,
通
URL
[]
3
,
信息传播的速度快等优势 大量的微博数据 需要
,
提取新的
URL
,
链接 通过这
web
过分析源文件的
[
]
4 6
~
。
以得到有用的信息 文中主要 研究
, , ,
些链接 然后继续寻找新的链接 如此不断循环 直
数据挖据
、 、 ,
如何设计一个高并发 高性能 功能齐全 健壮和可
。
到抓取和分析所有页面 当然这是理想情况下的
,
靠的多线程微博网络爬虫 并在基于
,
执行情况 但事实上是不可能抓取互联网上所有的
操作系
Linux
[
]
7 8
~
。
来实现
。 ,
网页 根据现在公布的数据 最好的搜索引擎也只
统上使用
编程语言
Pthon
y
:
,
:
日 修回日期
2014 12 29
收稿日期
年 月
2014 11 17
年
月
日
*
: , , , :
作者简介 李俊丽 硕士 讲师 研究方向 数据库与软件工程技术
。
:
李俊丽 基于
的
多线程爬虫程序设计
第
卷
43
862
ꢀ
Linux
thon
py
。
, ,
公钥 公钥的两个参数 微博给了
RSA
爬取整个互联网
的网页
先创建一个
40%
,
,
模拟登录
固定的值 但都是十六进制字符串 首先是第一步
’,
这
2.2
ꢀ
,
网站 以前的网站不需要 登
,
y
‘
第二个是 加密中的
10001
不同于传统
登录的
web
ubke
s
j
p
, ,
录 现在的社交网站进入个人主页需要登录 不登
,
两个值需要从十六进制转换为十进制 但也可以写
。
录访问将会跳转到登录页面 所以需要设计一种
。
死在 代 码 中 再 次 使 用
公 钥 对 拼 接 了
ser
-
RSA
。 ,
社交网站爬虫程序 该程序支持登录 而且可以获
和
vertime nonce
值的字 符 串 进行
加 密 来获
RSA
。
取大量用 户 的 信 息 我 们 采 用
, ,
取一个中间密码 最后中间密码转为十六进制 获
机 制 来 解
Session
。
Session
。
得真正的密码字符串
决
通过
和
Cookie URL
重写来实现用户
。
登录 通过
,
会话 但如果
,
第 四 步 前 三 步 得 到 的
,
servertime nonce
ꢀ
可以实现
Session
那么可以使用
cookie
,
Cookie
。
、 、 ,
值填充请求参数 其余的请求参数值
rsakvsus
p
客户禁用了
重写
URL
,
:“ ”:“
entr weibo
y
”,“ ”:
atewa
y
多线程
作为 常 量 例 如
“”,“ :“”、“ : ,
savestate 7 userticket''1''ssosim lel
p
-
2.3
thon
ꢀpy
g
:
使用线 程 主 要 有 两 种方 式 用 函数 或
Pthon
y
1
。 :
使用类来包装线程对象 使用函数实现多线程 线
: ,
oin''1''VSNF service
g
”:“ ”、“
”:“
”、
g
1
miniblo
_ _
start new thread
()
函数来创建一个新
“ ‘:’
wencode rsa2
p
”、“
编 码
”:“
”、“ ”:
relt
p
程模块的
utf 8
-
headers=
,
。 :
的线程 用类包装线程对象 通过创建线程子类来
“ ”,
然后请求头文件分配
115
{“
UserA
-
-
。
”:“
/
(
: :
包装一个线程对象
ent Mozilla 5.08.0X11 Linuxi686rv8.
g
ꢀ
) / //
0 Gecko 20100101Firefox8.0Chrome 20.0.
ꢀ
基于
的
多线程爬虫
thon
py
3
Linux
ꢀ
/ ”},
最后通过
11Safari 536.11
://
htt loin.sina.
p
g
程序设计
/
/
?
com.cnssoloin. h Client= ssoloin
p p
以
g
g
,
设计主要包括两大模块 分别是模拟登录模块
。
(
) ,
发送请求 从返回的数据
Jsv1.4.4
方法
POST
ꢀꢀ
。 ,
和抓取微博数据模块 模拟登录模块是基础 不成
( )
中的 指代的
*
。
URL
中提取
location.relace
p
*
, ,
功登录微博 没有权限查看用户主页 个人信息和
,
第五步 上 一 步 得 到 的
使 用
GET
方 法
URL
, ,
关注页面 只有成功登录 才能爬取信息
。
,
发送请求给服务器 保存请求的
,
信息 这就
Cookie
。
Cookie
,
在这一点上 完全可以模拟
模拟登录模块
是需要的登录
3.1
ꢀ
,
为了增加用户的数量和功能需求 在访问新浪
,
正常登录的过程 保存登录成功的
。
Cookie
,
微博用户主页时都需要用户登录验证 只有登录用
微博数据爬取模块
3.2
ꢀ
,
户才可以查看页面内容 或者跳转到登录页面要求
,
通过模拟登录成功登录微博 通过线程调度
,
。 ,
用户必须登录 而微博为保护自己的数据 避免不
, ( :
访问主页 例如
ID htt
://
weibo.
p
获得微博博主
,
必要的资源消耗 设置了复杂的登录方法故意采取
/ / ),
可以分页查看用户所有
com 1197161814 rofile
p
。
措施防止爬虫访问 通过抓包分析和查看新浪通
, , ,
的微博 通过修改请求参数 反过来 下载包含所有
(
url htt
:// /
loin.sina.com.cnsinu si
g p g
-
/
。
页的微博用户数据 微博数据包括消息
、
消息
ID
行证
p
g
)
,
、 、 、
内容 消息 看到的用户数量 转发消息 消息评论
@
的源代码 你可以找到新浪微博登录
s
j
加
nin.h
p p
(
://
loin.sina.com.cn sssossolo
g
-
/ /
j
/
、 。
的数量 新 闻 发 布 时 间 等 微 博 数 据 爬 取 步 骤 如
密文件
htt
p
g
),
登录过程包括访问干扰如获取随机参数和
:
下
in.s
j
,
多个加密方法 新的登录过程中需要重复请求服务
,
第一步 当前线程调度微博博主
,
首先创建
ID
,
器以完成登录过程 在这个过程中也对密码进行了
,
一个存储 新 浪 微 博 数 据 的 数 据 结 构 本 系 统 采 用
[ ]
10
[ ]
11
。
,
字典数据结构的基本数据类型 它 包 含多
Pthon
y
多次
加密
和
加密
这使得模
RSA
BASE64
[
]
12
。
拟登录 很困难 模拟登录步骤如下
:
, ,
个键值对的数据结构 在创建后 初始化每个键的
,
第一步 从配置文件得到已经配置好的用户名
, , ,
初始值 部分使用默认值 如消息的转发数量 新闻
。
。
评论的数量的初始值为
0
和密码
,
第二 步 添 加 自 己 的
,
提 取 希 望 的
username
, ,
第二步 读取配置文件的配置信息 配置信息
,
p
。
(
用户主页添加一些请求参
URL
和
servertimenonce ubke
y
值
当 然 可 以
包括抓取数据的
rsakv
ꢀ
,
值写死在代码中 这是一个固
),
提取结果是否格式 化
,
下 载 网页
needExtract
将
和
y
数
ubke
rsakv
p
。
,
(
最大的数量 数据存储格式和存储路径
CSV
定值
文件
,
,
加密用户名 而密码需要 首
), ,
连接参数 需要提取的名称字段
第三步
路径和
M SQL
y
BASE64
全部评论(0)