基于Python的网络信息自动抓取系统毕业论文

基于Python的网络信息自动抓取系统毕业论文
基于Python的网络信息自动抓取系统毕业论文

基于Python的网络信息自动抓取系统

摘要

随着移动互联网的快速发展和5G技术的投入建设,信息在社会发展中起着至关重要的作用,具备着前所未有的价值。人们想要掌握最新的信息和了解社会的发展趋势,就要不断递增花在阅读网络信息的时间。怎么从浩瀚的信息海洋中迅速有效地提取所需信息已经越来越重要。搜索引擎也随着我们的需求而诞生和发展,它以爬虫技术为核心。为提高用户访问网页信息的效率,本设计基于Python的Scrapy爬虫框架和MySQL后台数据库,以“百度新闻”为爬取对象,实现定时自动抓取指定范围的网页信息并存储到后台数据库中,并使用hashlib模块过滤重复数据。

关键词:爬虫技术 Scrapy爬虫框架 MySQL数据库定时自动

Automatic network information grabbing system based on Python

Name: Diao Yangjian

Major: Electronic Information Science and technology

Instructor: Wan Changlin, Assistant Researcher

(Electronic Information and Electrical Engineering Department of Huizhou University, No. 46, Yanda Avenue, Huizhou City, Guangdong Province, 516007)

Abstract

With the rapid development of mobile Internet and the investment of 5g technology, information plays an important role in the social development and has unprecedented value. If people want to master the latest information and understand the development trend of society, they need to spend more and more time reading network information. How to extract the needed information from the vast ocean of information quickly and effectively has become more and more important. Search engine is also born and developed with our needs. It takes crawler technology as the core. In order to improve the efficiency of users' access to web information, this design is based on Python's scrapy crawler framework and MySQL background database, taking "Baidu news" as the crawling object, to realize the automatic crawling of the specified range of Web information and storage in the background database, and use hashlib module to filter the duplicate data.

Keywords:crawler technology scrapy crawler framework MySQL database timed auto crawl

目录

1 前言 (5)

1.1 研究背景 (5)

1.2 研究意义 (5)

1.3 研究内容 (5)

2 设计原理以及相关技术介绍 (7)

2.1 Scrapy爬虫框架 (7)

2.1.1 Scrapy分析 (7)

2.2 Robots协议 (8)

2.2.1 Robots协议简介 (8)

2.2.2 协议的写法 (8)

2.2.3 Robots协议的缺点及影响 (9)

2.3 正则表达式 (9)

2.3.1 简介 (9)

2.3.2 应用场景 (9)

2.3.3 贪婪模式与懒惰模式 (9)

2.4 XPath表达式 (9)

2.4.1 简介 (9)

2.5 MySQL数据库 (10)

2.5.1 简介 (10)

2.5.2 MySQL数据库的特点 (10)

2.6 Fiddler (10)

2.6.1 为什么使用Fiddler (10)

2.6.2 为什么选择Fiddler (11)

2.6.3 简介 (11)

2.7 hashlib模块 (11)

2.7.1 简介 (11)

2.7.2 MD5算法 (12)

3 基于Scrapy框架的百度新闻爬虫具体实现 (13)

3.1 爬取对象简介 (13)

3.2 网络爬虫实现细节 (13)

3.2.1 创建Scrapy爬虫项目和爬虫应用程序 (13)

3.2.2 配置items.py文件,设置数据存储容器 (14)

3.2.3 使用Fiddler抓包工具分析URL规律 (14)

3.2.4 配置news.py文件,设置爬虫程序 (14)

3.2.5 配置settings.py文件 (15)

3.2.6 创建MySQL数据库 (16)

3.2.7 配置pipelines.py文件,进行数据处理 (16)

3.2.8 设置定时爬取模块 (16)

4 爬虫测试与效果展示 (17)

4.1 运行状态及测试 (17)

4.2 数据抓取结果展示 (17)

5 总结与展望 (17)

5.1 总结 (17)

5.2 期望 (18)

参考文献 (19)

致谢...................................................... 错误!未定义书签。

1 前言

1.1 研究背景

如今已经是2020年,随着移动互联网的快速发展和5G技术的投入建设,移动互联网越来越普及,社会生活的基本方式正在悄无声息的发生变化。当今时代,互联网越来越贴近人们的生活,已经成为生活的必需品。人们的衣食住行都与互联网息息相关,不可分离。许多行业都深受互联网的影响,即使是历史悠久的传统行业。在这个时代,信息就是金钱,具备着前所未有的价值,已经成为社会发展不可或缺的一部分。为了让自己做出正确的判断,我们要掌握最新的信息和了解社会的发展趋势,造成人们花在阅读网络信息的时间不断递增。互联网是一个浩瀚的信息海洋,是大量信息的载体,怎么从海洋中迅速有效地提取所需信息是非常困难的,无异于大海捞针,更何况想要利用这些信息了。与此同时,搜索引擎也随着我们的需求而诞生和发展。

1.2 研究意义

搜索引擎可以当成是一个入口或者指南。它可以帮助人们从互联网中搜索信息,是人们获取互联网资源的重要途径,给人们带来了便利。但是,局限性是通用性搜索引擎的最大缺点。例如,通用搜索引擎是通过关键字来搜索的,然后返回大量的数据信息给用户,但是在这些信息中,并不都是用户所关心和需要的数据信息,里面还有许多是用户并不关心的数据信息。聚焦爬虫具有高度的可自定义性,可以帮助我们迅速有效的提取需要的信息。它按照程序设计者所设定的规则,有选择的访问互联网上的网页,或者是与之相关的链接。Scrapy爬虫框架可以让聚焦爬虫的设计和工作变得更加方便。

1.3 研究内容

本设计主要研究的内容如下:

(1)获取数据:使用Scrapy框架对百度新闻网站首页进行访问,获取各栏目的新闻数据信息。

(2)数据存储:将各栏目的新闻数据信息存储到MySQL后台数据库中。

(3)进行数据的过滤去重:使用Python编程语言的hashlib库的MD5算法,对获取的新闻网页URL进行加密处理,得到唯一的32位的十六进制字符串值,从而达到数据过滤去重的效果。

(4)定时爬取,更新数据库:使用Python编程语言的Time模块,对爬虫进程设置定时循环,从而不断更新数据库的数据。

2 设计原理以及相关技术介绍

网络爬虫是一段程序或者脚本。首先,分析百度新闻网站首页的HTML代码的规律,从而获取初始的URL。其次,爬取初始的URL的内容并分析HTML代码规律,从而获取百度新闻网站首页的所有新闻网页链接。然后,爬虫先访问获得的新闻网页链接。若能够访问则自动下载其中的内容,再通过解析模块,解析得到已爬取页面中我们所需要的信息。接着,将所爬取到的信息存储到MySQL后台数据库中,方便我们查询信息和统计。最后,设置定时爬取,可以不断的更新数据库的数据。

2.1 Scrapy爬虫框架

2.1.1 Scrapy分析

Scrapy是一套比较成熟的web爬虫框架。它可以用来爬取web数据,也可以用来提取结构性的数据。它让网络爬虫的设计和工作变得更加方便。它的应用范围非常广泛,例如,可以对大数据进行深度挖掘,也可以对大批的信息进行处理,还可以对历史数据进行存储等。Scrapy具备很强的拓展性,可以灵活的完成许多需求。

Scrapy整体框架由7个部分组成:

(1)Scrapy Engine(引擎):引擎负责控制整个数据处理过程,以及触发一些事务处理,控制和协调各个组件。

(2)Scheduler(调度器):主要负责存储待爬取的网址,并确定这些网址的优先级,决定下一次爬取哪个网址等。

(3)Downloader(下载器):实现对网络上要爬取的网页资源进行高速下载。

(4)Spider(爬虫):该组件是核心。它负责接收引擎中的response响应,然后对响应进行分析处理,提取出关注的数据。

(5)Item Pipeline(项目管道):负责接收提取的item,然后对这些item 进行对应的处理。

(6)Downloader Middlewares(下载中间件):处于下载器和引擎之间,主要用于对下载器和引擎之间的通信进行处理。

(7)Spider Middlewares(爬虫中间件):处于引擎与爬虫组件之间,主要

用于对爬虫组件和引擎之间的通信进行处理。

Scrapy基本运行流程:

(1)首先,需要确定要爬取的目标,所以引擎先从调度器中选择一个URL。

(2)引擎收到URL后,将其打包成一个请求,然后传给下载器。

(3)下载器把资源下载下来,将资源打包成应答包。

(4)爬虫接收应答包,再解析它,并使用回调函数。

(5)如果从该应答包中解析出实体,再交给项目管道,然后才进行进一步的处理。

(6)如果解析出的结果是URL,则将新获得的URL发送给调度器等待被调用抓取。

2.2 Robots协议

2.2.1 Robots协议简介

Robots协议也称为爬虫协议。它存放于网站根目录下,是一个ASCII编码的纯文本文件。它是互联网行业中约定俗称的一种准入规范,其目的在于告知所有的搜索引擎,在此网站中,哪部分内容是允许被获取的,哪部分内容是不允许被获取的。

爬虫在进入网站之前,首先要查看robots.txt。如果该文本文件存在,则解析其中的规则,然后再确定访问的范围。如果该文本文件不存在,则说明该网页的所有数据都可访问。

2.2.2 协议的写法

robots.txt放到网站根目录下即可,一个robots.txt只能控制相同端口,相同站点的网页抓取策略。常规写法如下:

(1)User-agent:声明哪些爬虫不允许访问此网站。

(2)Disallow:声明了哪些URL是禁止访问的,不允许任何爬虫进入。

2.2.3 Robots协议的缺点及影响

各网站设置了Robots协议以防止搜索引擎机器人抓取敏感信息。但是它只是一个通告,需要搜索引擎机器人的配合,才可以使得搜索引擎机器人受到限制,不允许抓取站点的内容。但是,在实际情况中并不是每个ROBOTS都会自觉遵守的。若网络爬虫的设计者违背这个协议,伪装成其他身份进入,其设计的代码也将能够自由爬取站点中的资源。

2.3 正则表达式

2.3.1 简介

正则表达式是一套规则,用于描述字符串排列。对于某些特定字符,或者是这些特定字符的组合,它可以预先定义好,形成一个“字符串”。它表示的是字符串的一种过滤逻辑,可用来检查,判断某个种子字符串是否存在于该字符串中,若存在,替换匹配的子字符串;它也可以应用在从某个字符串中取出满足某个条件的子字符串等。正则表达式能够很容易地提取到我们需要的信息。

2.3.2 应用场景

(1)验证:表单提交时,进行用户名密码的验证。

(2)查找:从大量信息中快速提取指定内容,在一批url中,查找指定url。

(3)替换:先对特定格式的文本进行搜索,然后再进行匹配,成功后再进行特定的替换。

2.3.3 贪婪模式与懒惰模式

(1)贪婪模式:re库默认采用贪婪模式,即正则表达式在匹配时,会尽量多的匹配符合条件的内容,输出匹配最长的子串。

(2)懒惰模式:在正则表达式在匹配时,会尽量少的匹配内容。

模式切换的方式:通过在“*”或者“+”限定符之后放置“?”。

2.4 XPath表达式

2.4.1 简介

XPath是一种XML路径语言。它是一种定位和处理可扩展标记语言XML文档

中项目的方法,主要是通过使用基于文档逻辑结构或者层次结构路径的寻址语法。XPath通常用于提取数据,通过这些数据,我们可以在web页面中获得所需的内容,其实xml和html的数据可以看成一个树形的结构,每个树有很多树枝(树枝称为节点),XPath语法提供了在树中查找不同节点的能力。

2.5 MySQL数据库

如何处理Scrapy爬虫获取的数据需要认真的考虑。Python中有很多种存储方法,因为在本次设计中没有涉及到分布式爬虫,所以我选择的是使用MySQL 数据库进行数据存储。

2.5.1 简介

数据库,是一个存储大量数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律将数据存储起来,用户可以在数据库中添加、修改、删除和查询数据。

MySQL数据库是一种关系型数据库管理系统。在关系型数据库中,可以将数据存储在不同的表中,而不是将所有数据都存储在一个大型仓库里,这样可以提高速度和灵活性。

2.5.2 MySQL数据库的特点

MySQL数据库是不收费的,人们可以直接下载并使用。它能够有效、快捷地处理大量的数据。MySQL数据库具有处理速度快、占用体积小等优点,其中,最为重要的是其开源的优点,所以MySQL数据库常常受到网站开发者的青睐。

2.6 Fiddler

2.6.1 为什么使用Fiddler

网络爬虫是自动爬取网页的程序,在爬取的过程中必然涉及客户端与服务器端之间的通信,自然也需要发送一些HTTP请求,并接收服务器返回的结果。在一些稍复杂的网络请求中,我们直接看网址的变化是看不出规律的,此时如果要

进行自动化爬取网页,就必须要通过程序构造这些请求,而要通过程序构造这些请求,就必须首先分析这些请求的规律。所以此时我们要使用工具截获这些请求,对这些请求进行分析。

2.6.2 为什么选择Fiddler

目前,抓包工具有很多,为什么使用Fiddler呢?原因如下:

(1)尽管firebug可以获取数据包,但它的功能还不足以分析HTTP请求的细节。模拟HTTP请求的能力也不够,因为firebug通常是需要“无刷新修改”。如果刷新了页面,所有的修改都不会保存。

(2)Wireshark功能齐全,但凡事有利必有弊。因此,它的规模较为庞大。对于我们来说,只需要捕获HTTP请求的应用程序即可,所以,它似乎是过度限定的。

(3)Httpwatch仅支持IE和firefox浏览器(其他浏览器可能会出现一些问题),因此,这对于大多数使用者来说有些力不从心。

(4)浏览器本身就拥有调试工具。优点是浏览器自带,比较轻量,但无法支持一些比较复杂的抓包。因此,并不适合本设计。

(5)Fiddler具有很强的通用性且操作简单。只要能够将 HTTP 代理设置为 127.0.0.1:8888,任何浏览器和应用程序都可以使用 Fiddler。

2.6.3 简介

Fiddler是比较好用的web代理调试工具之一,它使用的代理地址是:127.0.0.1,默认端口为8888,也可以设置修改。它以代理服务器的方式,位于客户端和服务器端之间,监听网络数据流动。

Fiddler可以支持众多的HTTP调试任务。例如,可以设置断点,或者重新发送、修改请求数据和转存等操作,也可以用来检测网络安全和流量,功能非常的强大。

2.7 hashlib模块

2.7.1 简介

hashlib包含着MD5和SHA的算法,它主要是应用于安全领域中的加密算法。而我们一般使用的比较多的是MD5算法。MD5和SHA是摘要算法,什么是摘要算法呢?就是将任意长度的输入,变成固定长度的输出。摘要函数是一个单向函数,计算f(data)很容易,但是通过digest反推data非常困难,对data做任意修改,计算出的摘要值是完全不相同。

2.7.2 MD5算法

MD5算法快速且常用。它的结果是固定的16字节,通常由一个32位十六进制字符串表示。SHA1算法更安全。它的结果是固定的20字节,通常由一个40位十六进制字符串表示。安全系数更高的算法有sha256、SHA512等,但安全系数越高,算法就会越慢,并且摘要长度也越长。

MD5算法特点:

(1)抗修改性:原数据如果有任意一丝的改变,生成的MD5值也会有很大的区别。

(2)压缩性:对于任意数据,无论其长度如何,生成的MD5值长度一样。

(3)可靠性:相同算法以及相同的字符串获得的密文结果总是相同。

(4)强抗碰撞性:即使给定原始数据和MD5值,也很难找到MD5值相同的伪造数据。

(5)易于计算:无论原数据是什么,计算出MD5值都非常容易。无论数据有多大,都可以快速计算MD5字符串的字符串。

3 基于Scrapy框架的百度新闻爬虫具体实现

3.1 爬取对象简介

本设计实现的网络爬虫是以“百度新闻”网站的首页为爬取目标,爬取的内容为网站首页的各个栏目新闻的标题、网页链接和新闻的文本内容,并存储到MySQL后台数据库中,爬取的栏目分别有城市栏目、国内栏目、国际栏目、娱乐栏目、体育栏目、财经栏目、科技栏目、军事栏目、互联网栏目、探索栏目、女人栏目、健康栏目和图片新闻。

百度新闻是一种24小时的自动新闻服务,每隔5分钟就会自动选取更新。它与其他新闻服务不同,新闻来源包括500多个权威网站,手机和过滤来自数千个新闻来源的新闻报道。热点新闻每天由新闻源网站和媒体“民主投票”评选,没有任何人为的编辑元素,突出了新闻的客观性和完整性。

本设计选取“百度新闻”作为爬取对象,我们可以接触到很多方面的内容,如网页结构解析、fiddler抓包工具、hashlib模块以及MySQL数据库的连接与存储等,这可以帮助我们进一步的了解网络爬虫的工作原理和流程。同时,我们获得的新闻信息也是极具价值的。

3.2 网络爬虫实现细节

3.2.1 创建Scrapy爬虫项目和爬虫应用程序

在本设计中,我们首先需要创建一个Scrapy爬虫项目和爬虫应用程序,具体操作如下:

(1)首先,键盘按住win+R,并在输入窗口中输入cmd,打开命令提示符;

(2)进入D盘目录下的Scrapy文件夹,并输入Scrapy命令“scrapy startproject baidunews”创建一个名为“baidunews”的爬虫项目;

(3)进入“baidunews”文件夹,输入“scrapy genspider -t basic news https://www.360docs.net/doc/09977337.html,”创建一个名为“news”的爬虫应用程序。

至此,我们已经完成了Scrapy爬虫项目和爬虫应用程序的成功创建,项目结构如下:

其中,news.py文件是爬虫设置文件,需要爬取什么网页和数据的提取都是在此文件中编写;items.py文件是设置数据存储模板,用于结构化数据;pipelines.py文件为爬虫项目的管道文件;settings.py文件是设置文件。

3.2.2 配置items.py文件,设置数据存储容器

在本设计中,我们需要爬取的内容为百度新闻网站首页的各个栏目新闻的标题、网页链接和新闻的文本内容,所以我们先确定三个容器用来存储相应的数据,分别是“title”、“link”和“content”。

因为在本设计中设置有定时爬取模块,可能会爬取到重复的新闻内容,为了避免MySQL数据库数据冗余,因此,本设计选择使用hashlib模块,并利用其中的MD5算法,对爬取到的新闻链接进行加密处理得到一个32位的十六进制字符串作为MySQL数据库的主键,从而达到消除数据冗余的目的。因此,还需要设置一个容器“md5”用以存储MD5算法处理后得到的数值。本设计使用的源代码如下所示:

3.2.3 使用Fiddler抓包工具分析URL规律

因为在百度新闻首页网站的HTML代码中发现里面包含的信息并不完整,无法直接得到所有的新闻链接,加入了反爬虫技术,因此猜测数据内容隐藏在动态数据JS(JavaScript)中,使得我们无法直接获得全部数据。

因此,我们需要使用Fiddler进行分析规律。通过Fiddler工具可知,所有栏目的信息都隐藏在下图的类似链接中:

将所有栏目的信息链接进行对比,得到链接规律如下:"https://www.360docs.net/doc/09977337.html,/widget?id="+XXX+"&ajax=json",所有栏目的信息链接的区别只在于id值有所不同。因此,我们可以先得到所有栏目的id值并存放到一个列表中,然后依次取出并替换到XXX中得到所有栏目的完整链接。

3.2.4 配置news.py文件,设置爬虫程序

news.py是整个项目的核心部分,网页爬虫的实现代码主要在这里。完成该文件的配置,需要进行以下步骤:

进行一级爬取:如今我们已经得到了所有栏目的完整链接,所以我们只需要依次从列表中取出完整链接并进行访问爬取,即可获得百度新闻首页网站所有栏目的HTML代码并将内容交给下一个解析函数next进行下一步的处理。

(2)进行二级爬取:通过第一次的爬取,我们已经获得了所有的百度新闻首页网站所有栏目的HTML代码内容,里面包含了所有栏目的新闻链接,通过观察HTML代码发现,可以轻松的通过re库的正则表达式来快速提取所需的新闻链接。但是有部分提取到的新闻链接内容是不规则的,如果不修改的话则无法直接访问爬取,所以需要进一步的修改处理。

经过修改处理后,我们已经得到了百度新闻首页网站所有栏目新闻的正确链接,因此我们对所有新闻的正确链接进行访问爬取,从而获得所有新闻的网页内容并交给解析函数next2进行下一步的处理。

(4)数据信息提取:经过第二次的爬取,我们已经成功获得了百度新闻首页网站所有栏目新闻的HTML代码内容,然后,我们从中提取出需要的数据信息,最后存储到相应的容器中。直接提取数据的方法有很多种,在本设计中,使用XPath表达式来提取数据信息相比于其他几种方法更加的方便和迅速。通过观察大量的新闻网页的HTML代码找到数据提取规律并将所需数据提取出来,然后将所获得的数据存储到相应的容器中,并交给pipelines.py文件进行数据处理。

新闻URL过滤去重:通过第一次的爬取,我们已经获得了所有的百度新闻首页网站所有栏目的新闻链接,因为在本设计中设置有定时爬取模块,可能会爬取到重复的新闻内容,为了避免MySQL数据库数据冗余,因此,本设计选择使用hashlib模块,并利用其中的MD5算法,对爬取到的新闻链接进行加密处理得到一个32位的十六进制字符串存储到容器md5中作为MySQL数据库的主键,从而达到消除数据冗余的目的。

3.2.5 配置settings.py文件

编写配置settings.py文件,必须在pipelines.py文件处理从网络爬虫中获取的items之前,否则可能会导致数据无法得到处理。首先,因为本设计对“百度新闻”网站进行爬取只是为了研究和学习网络爬虫的相关技术,并非用在商业盈利方面,所以在爬虫开始前需要将ROBOTSTXT_OBEY改为False,意义为不遵从网站设定的Robots协议,否则网络爬虫会很快就停掉的。其次,我们还要规定item的处理类,在settings.py中找到ITEM_PIPELINES,并将其注释前缀去掉,使得pipelines.py文件可以运行起来。

3.2.6 创建MySQL数据库

为了存储从网络爬虫得到的数据信息,首先,我们需要先配置好MySQL数据库的信息,分别设置host的值为“127.0.0.1”,user的值为“root”,passwd 的值为“123456”。其次,进入MySQL数据库系统,创建一个名为“baidunews”的新数据库,并在该数据库中创建一个名为“news”的表格用以存储网络爬虫获得的数据信息。在该表格中,创建四个属性分别是“title”,“link”,“content”和“md5”,并设置md5属性为主键。结果如下图所示:

3.2.7 配置pipelines.py文件,进行数据处理

经过news.py文件进行网络爬虫后,已经得到了我们所需要的百度新闻网站首页的各个栏目新闻的标题、网页链接、新闻的文本内容和网页链接的MD5值,并且存放在items中交由pipelines.py进行数据处理。

在进行数据存储之前,先建立起与MySQL数据库系统的连接。其次,使用for循环语句将items的每个新闻网页的数据提取出来,然后再执行SQL语句,并对执行语句进行异常捕捉,若是重复数据则输出“插入重复数据”,若不是重复数据则成功插入到数据库中,最后再关闭MySQL数据库连接进行数据保存。本设计使用的源代码如下所示:

3.2.8 设置定时爬取模块

百度新闻是一种24小时的自动新闻服务,每5分钟会自动选取内容更新。所以,我们设置定时爬取模块,使用while循环语句和Time库的延时函数,当百度新闻首页网站每5分钟自动选取更新一次内容时,我们的网络爬虫也重新爬

取一遍网页,将新的新闻内容存储到MySQL后台数据库中,不断地更新MySQL 数据库数据,达到与时俱进的效果。

4 爬虫测试与效果展示

4.1 运行状态及测试

(1)首先,键盘按住win+R,并在输入窗口中输入cmd,打开命令提示符;(2)先进入D盘目录下的Scrapy文件夹,再进入“baidunews”文件夹,并输入“scrapy crawl news --nolog”执行爬虫,得到消除日志信息后的网络爬虫

结果。

由上可知,网络爬虫可以正常运行,并且成功获得了百度新闻首页网站各栏目新的新闻数据信息,随后添加到MySQL后台数据库中,而对于重复的新闻数据信息也会输出提醒“插入重复数据”,不会添加到MySQL数据库中造成数据冗余。

4.2 数据抓取结果展示

进入到MySQL数据库系统中,打开“baidunews”数据库,进入“news”表格,可以看到Scrapy网络爬虫得到的数据信息。

5 总结与展望

5.1 总结

在本文中,首先介绍了网络爬虫的产生背景和意义以及网络爬虫的特点和基本原理。然后介绍了Scrapy爬虫框架的基本结构、各模块功能和运行的基本流程;介绍了信息提取方式如正则表达式和XPath表达式的基本概念和使用方法;介绍了利用Fiddler抓包工具对动态网页数据的进行捕获和分析的方法;介绍了hashli模块的MD5算法实现网页URL的过滤去重。

本设计基于 Python 和 Scrapy 等开源技术,实现了一个以“百度新闻”首

页网站新闻为目标的简单聚焦网络爬虫。本设计完成了以下任务:(1)使用Scrapy爬虫框架,对百度新闻首页网站的各栏目新闻信息进行数据获取;

(2)使MySQL数据库和Scrapy网络爬虫进行连接,将获取的数据存储到MySQL后台数据库中,进行数据存储;

(3)使用Python编程语言的hashlib库的MD5算法,对获取的新闻网页URL进行加密处理从而达到数据过滤去重的效果;

(4)使用Python编程语言的Time模块,对爬虫进程设置定时循环,从而不断更新数据库的数据。

通过本次研究,我们可以发现网络爬虫技术已经渗透到我们周围的每一个地方。学会网络爬虫开发,可以让我们对这个数据时代有着更好的理解。

5.2 期望

如今,随着信息时代的发展,人们对于信息数据的需求越来越迫切。实践证明,利用Scrapy 进行网络爬虫开发可以极大地提高效率,带来了极大的便利。但与成熟的面向海量终端还有一定的差距。因此,我认为还可以在以下几个方面做出适当的改进:

(1)可以考虑实现爬虫的分布化,引入Redis开源框架。这样将大大提高网络爬虫的性能。

(2)开发一个搜索引擎。用户可以选择关键字进行搜索网络爬虫的获得数据,从而实现前端的交互。

(3)它可以拓展到其他网站中去,比如搜索文学内容,这将是非常具有公益性的。

参考文献

[1]安子建. 基于Scrapy框架的网络爬虫实现与数据抓取分析[D].吉林大学,2017.

[2]方芳.基于Scrapy框架京东网站笔记本电脑评论数据爬取和分析[J].电脑知识与技术,2020,[2]16(06):7-9.

[3]鲁丰玲.基于Scrapy的招聘信息爬虫设计与实现[J].科技资讯,2019,17(20):7-10.

[4]周中华,张惠然,谢江.基于Python的新浪微博数据爬虫[J].计算机应用,2014,34(11):3131-3134.

[5]云洋.基于Scrapy的网络爬虫设计与实现[J].电脑编程技巧与维护,2018(09):19-21+58.

[6]汪兵. 基于Scrapy框架的分布式爬虫系统设计与实现[D].合肥工业大学,2019.

[7]李俊华.基于Python的网络爬虫研究[J].现代信息科技,2019,3(20):26-27+30.

[8]李培.基于Python的网络爬虫与反爬虫技术研究[J].计算机与数字工程,2019,47(06):1415-1420+1496.

[9]毕志杰,李静.基于Python的新浪微博爬虫程序设计与研究[J].信息与电脑(理论版),2020,32(04):150-152.

[10]严家馨.基于Python对资讯信息的网络爬虫设计[J].科学技术创新,2020(05):57-58.

[11]耿大伟. 基于Python技术的校园网搜索引擎的设计与实现[D].燕山大学,2015.

[12]孙瑜. 基于Scrapy框架的网络爬虫系统的设计与实现[D].北京交通大学,2019.

[13]李杰秦.基于Python语言下网络爬虫的技术特点及应用设计[J].数字通信世界,2020(01):209-210.

[14]陈康琛,刘进进,陈兴雷.基于网络爬虫的学生就业信息挖掘与推送研究[J].电脑知识与技术,2019,15(19):6-8+13.

[15]杨君,陈春玲,余瀚.基于Scrapy技术的数据采集系统的设计与实现[J].计算机技术与发展,2018,28(10):177-181.

基于python的网络爬虫设计

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 基于python的网络爬虫设计 基于 Python 的网络爬虫摘要随着计算机技术的不断发展,新的编程语言层出不穷,Python,Html 正是其中的佼佼者。 相比较早期普及的高级语言(Java,C 语言)等,Python 有着更加实用的模块和库,虽然牺牲了底层性,但却更加方便用于开发小型项目。 此外,Html 也已经被普遍用于网站前端,标记语言的特性结合CSS丰富了网页内容和形式,某种意义上也促进了更加人性化的电子商务系统的发展。 本文的网络爬虫正式基于 Python 语言编写的,通过对 Html 抓取加工将数据可视化,以监测逐渐从线下转移到线上,并随着电子商务发展越发简单普遍难以追踪的非法野生动物贸易。 本文首先对计算器语言的发展,尤其是 Python 和 Html 的优势、基础概念以及性能进行介绍。 最后着重介绍可以实现检测网络上非法野生动物贸易的爬虫的设计和实现。 程序主要包括三个模块: URL 解析,Html 抓取,本地输出。 Python 的开发环境和工具分别是 OS X 和 PyChram CE,主要调用了 Python 中的 Urllib2,beautifulsoup 模块。 最终的程序可以实现对指定网站,指定关键词抓取指定内容, 1 / 2

保存内容到本地,以便于追踪和检测。 关键字: Python ,HTML ,爬虫,非法野生动物贸易Python-Based quot;Illegal wildlife tradequot; Spider Electronics amp; Information Technology Program 11-1 Haozhi Zhu Supervisor Rui Zhao Abstract With the continuous development of computer technology, the new programming language after another, Python, Html is the one of the best. Compared to the early popularity of high-level language (Java, C language), etc., Python has a more practical modules and libraries, although at the expense of the underlying property, but it is more convenient for the development of small-scale projects. In addition, Html has also been widely used web front end, feature rich CSS markup language binding of web content and form, in a sense also promoted the development of a more user-friendly e-commerce system. In this paper, based on the official web crawler written in Python, Html crawling through the data visualization process to monitor the gradual shift from offline to online, and with the development of electronic commerce more simple universal untraceable illegal wildlife trade. Firstly, the development of the calculator language, especially Python and Html advantages, basic con...

山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 (1) 2 设计任务内容 (1) 3 网络爬虫程序总体设计 (1) 4 网络爬虫程序详细设计 (1) 4.1 设计环境和目标分析 (1) 4.1.1 设计环境 (1) 4.1.2 目标分析 (2) 4.2 爬虫运行流程分析 (2) 4.3 控制模块详细设计 (3) 4.3 爬虫模块详细设计 (3) 4.3.1 URL管理器设计 (3) 4.3.2 网页下载器设计 (3) 4.3.3 网页解析器设计 (3) 4.4数据输出器详细设计 (4) 5 调试与测试 (4) 5.1 调试过程中遇到的问题 (4) 5.2测试数据及结果显示 (5) 6 课程设计心得与体会 (5) 7 参考文献 (6) 8 附录1 网络爬虫程序设计代码 (6) 9 附录2 网络爬虫爬取的数据文档 (9)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计 在本爬虫程序中共有三个模块: 1、爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况 2、爬虫模块:包含三个小模块,URL管理器、网页下载器、网页解析器。 (1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL 管理器中取出一个待爬取的URL,传递给网页下载器。 (2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。 (3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页指向其他网页的URL,这些URL被解析出来会补充进URL管理器 3、数据输出模块:存储爬取的数据 4 网络爬虫程序详细设计 4.1 设计环境和目标分析 4.1.1 设计环境

Python网络爬虫实习报告

Python网络爬虫实习报告

目录 一、选题背景.................................................................................... - 2 - 二、爬虫原理.................................................................................... - 2 - 三、爬虫历史和分类......................................................................... - 2 - 四、常用爬虫框架比较..................................................................... - 2 - 五、数据爬取实战(豆瓣网爬取电影数据)................................... - 3 -1分析网页 .. (3) 2爬取数据 (3) 3数据整理、转换 (4) 4数据保存、展示 (9) 5技术难点关键点 (10) 六、总结 ......................................................................................... - 13 -

一、选题背景 二、爬虫原理 三、爬虫历史和分类 四、常用爬虫框架比较 Scrapy框架:Scrapy框架是一套比较成熟的Python爬虫框架,是使用Python开发的快速、高层次的信息爬取框架,可以高效的爬取web页面并提取出结构化数据。Scrapy应用范围很广,爬虫开发、数据挖掘、数据监测、自动化测试等。 Crawley框架:Crawley也是Python开发出的爬虫框架,该框架致力于改变人们从互联网中提取数据的方式。 Portia框架:Portia框架是一款允许没有任何编程基础的用户可视化地爬取网页的爬虫框架。 newspaper框架:newspaper框架是一个用来提取新闻、文章以及内容分析的Python爬虫框架。 Python-goose框架:Python-goose框架可提取的信息包括:<1>文章主体内容;<2>文章主要图片;<3>文章中嵌入的任heYoutube/Vimeo视频;<4>元描述;<5>元标签

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计范文

山东建筑大学计算机网络课程设计基于Python的网络爬 虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 (1) 4.1 设计环境和目标分析 (1) 4.1.1 设计环境 (1) 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (2) 4.3 控制模块详细设计 (3) 4.3 爬虫模块详细设计 (3) 4.3.1 URL管理器设计 (3) 4.3.2 网页下载器设计 (4) 4.3.3 网页解析器设计 (5) 4.4数据输出器详细设计 (6) 5 调试与测试 (6) 5.1 调试过程中遇到的问题 (6) 5.2测试数据及结果显示 (7) 6 课程设计心得与体会 (7) 7 参考文献 (8) 8 附录1 网络爬虫程序设计代码 (8)

9 附录2 网络爬虫爬取的数据文档 (15)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计

基于python的网络爬虫设计

基于python的网络爬虫设计【摘要】近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的利益,而网络爬虫是其中最为常用的 一种从网上爬取数据的手段。 网络爬虫,即Web Spider,是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页) 开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一 直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛 就可以用这个原理把互联网上所有的网页都抓取下来。 那么,既然网络爬虫有着如此先进快捷的特点,我们该如何实现它呢?在众多面向对象的语言中,首选python,因为python是一种“解释型的、面向对象的、带有动态语义的”高级程序,可以使人在编程时保 持自己的风格,并且编写的程序清晰易懂,有着很广阔的应用前景。 关键词python 爬虫数据 1 前言 1.1本编程设计的目的和意义 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(例如传统的通用搜索引擎AltaVista,Yahoo!和Google等)作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如: (1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。 (2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 (3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。 (4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(generalpurpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 1.2编程设计目及思路 1.2.1编程设计目的 学习了解并熟练掌握python的语法规则和基本使用,对网络爬虫的基础知识进行了一定程度的理解,提高对网页源代码的认知水平,学习用正则表达式来完成匹配查找的工作,了解数据库的用途,学习mongodb数据库的安装和使用,及配合python的工作。 1.2.2设计思路

基于Python的爬虫模拟OAuth2.0授权登录

2018.08 网络爬虫是一个程序或脚本,根据某些规则自动从万维网获取信息。网络爬虫主要分为爬虫、通用网络爬虫、增量爬虫(增量爬虫)和Deep Web 爬虫(Deep Web)。聚焦爬虫又被称作为主题爬虫,是一个为了爬取与主题相关页面的爬虫。主要解决的是使用聚焦网络爬虫在获取所需资源中遇到需要通过OAuth2.0登录的问题。 1爬虫模拟登录的基本策略 随着大数据时代的到来,海量的数据爆炸式的出现 在网络之中[1] 。数据所包含的价值也逐渐凸显出来,需要从互联网中获取海量的数据,以手工获取的形式效率低下,如果以爬虫的形式获取需要的数据则会节省大量的人力物力。在通过爬虫获取需要数据的过程中,被爬取网站常常要求登录后才能访问某些页面。并且许多网站是通过OAuth2.0授权来获取页面访问权限的。 当前常见的爬虫模拟登录的策略有: 策略一:爬虫模拟浏览器登录对应网站,通过使用代码来模拟浏览器的登录从而获取对应网站的Cook?ies 信息并且储存,这种方法实现难度较高,但是不需要考虑到Cookies 过期的问题。 策略二:间接通过各种方式从浏览器获取包含用户信息的Cookies,把Cookies 放在代码中,这种策略实现比较难度低,但是Cookies 容易过期,在大规模使用时繁琐。 主要利用策略一来实现爬虫模拟OAuth2.0授权登录。 2OAuth2.0授权的实现流程 OAuth2.0的认证流程如图1所示[2],具体流程如下: (1)客户端(Client)携带身份验证信息向认证服务器 (Authorization server)请求认证;(2)认证服务器验证用户身份信息,验证成功返回访问许可(Authorization code);(3)客户端携带从认证服务器获取到的访问许可访问资源服务器(Resource server) (4)资源服务器 验证客户端提交的访问许可,验证成功后资源服务给客户端访问令牌,访问令牌中包括作用域、有效时间以及其他属性[3]。 3 爬虫通过OAuth2.0授权登录 3.1获取需要提交表单值 通过浏览器调试工具获取登录所需要提交的表单信 息如图2所示,大部分网站提交的表单包括账号、密码以及数个hidden 域的字段,hidden 域的字段的作用主要是为了收集和发送信息,hidden 域的字段值分为固定值和随机值。可以通过浏览器调试工具查看多次提交流基金项目:2017年国家大学生创新创业训练计划项目(项目编号201711654008),湖北省教育厅教研项目(2016424)。 作者简介:张少谦(1998-),男,研究方向:软件工程;周天宏(1963-),男,通讯作者,硕士,教授,研究方向:计算机应用、计算机辅助教育等。收稿日期:2018-06-05 基于Python 的爬虫模拟OAuth2.0授权登录 张少谦,周天宏* (武汉商学院信息工程学院,武汉430056) 摘 要:随着大数据时代的到来,越来越多的信息涌入互联网。以人工的形式在互联网中获取所需信息费时费力,而以网络爬虫的形式获取所需资源节省则大量人力物力财力。在通过网络爬虫获取所需资源的过程中爬虫需要模拟人工登录从而获取某些资源,网络爬虫的模拟登录是实现网络爬虫的一个重要环节,以Python 语言作为开发语言,解决使用网络爬虫过程中所遇到的需要通过模拟OAuth2.0授权登录的问题。剖析了模拟登录整体流程,并且给出了爬虫通过OAuth2.0登录的具体的应用实例。关键词:网络爬虫;模拟登录;OAuth2.0授权登录 图1OAuth2.0的工作流程 认证服务器 客户端 资源服务器 44

基于Python的网络爬虫-开题报告

基于Python的网络爬虫的设计与实现 1.本课题所涉及的问题在国内(外)的研究现状综述 无论国内国外,随着动态网页技术的发展,网络爬虫的难度也越来越高。很大一部分的动态网页是搜索不到的,例如聊天室系统,另外还有很多页面是需要注册为用户并登录才可以看到,并且在登录过程中有输入验证码这一操作,验证码现在对于网络爬虫是一大难题。目前来说,大多数爬虫是用后台脚本类语言写的,其中python无疑是用的最多最广的,并且页诞生了很多优秀的库和框架。但是一般来说,搜索引擎的爬虫对爬虫的效率要求更高,对于大多用户提出的与主题或者领域相关的查询需求,传统的通用搜索引擎往往不能提供令人满意的结果为了克服通用搜索引擎的不足,提出了面向主题的聚焦爬虫的研究。现在,聚焦爬虫已经成为爬虫的研究热点之一。 2.本人对课题任务书提出的任务要求及实现预期目标的可行性分析过去,不管是翻阅书籍,还是通过手机,电脑等从互联网上手动点击搜索信息,视野受限,信息面太过于狭窄,且数据量大而杂乱,爆炸式信息的更新速度是快速且不定时的。要想手动获取到海量的信息,并进行分析整理,都要耗费巨多的时间,精力,效率低下,但是通过网络爬虫,根据需求获取海量网络数据,进行数据清洗,去重,入库,存表,数据可视化,把分析结果反馈给用户,并把数据结合搜索引擎存储,用户在查询数据的时候实现搜索建议,搜索结果关键字高亮化,展示热门搜索等功能,精简搜索范围,提高搜索效率,提供令人满意的结果,克服了通用搜索引擎的不足。 3.本课题需要重点研究的、关键的问题及解决的思路 绝大部分网站都有反爬虫机制,数据不能获取到,这时需要采取设置请求头,设置请求的时间间隔,伪造代理信息或者采取其他的措施来解决。部分网站需要登录之后才能找到需要的数据,在登录的过程中会遇到输入验证码的问题,可以选择模拟登陆,第一次登录之后,鼠标右键,查看网络,查找登录时的参数字段信息,利用这些字段名,通过模拟浏览器操作实现自动登录,验证码可以选择手动输入也可以选择人工打码。数据库性能会因为表结构的设计受到很大的影响,每张表的字段值或多或少,需要合理的设计数据库,这个可以通过垂直分表,水平分表,选择合适的存储引擎等来实现,在存储的过程中,选择异步存储,依靠连接池来实现数据量过大导致的时间,性能,效率上的问题。 4.完成本课题所必须的工作条件(如工具书、实验设备或实验环境条件、某类市场调研、计算机辅助设计条件等等)及解决的办法 1.Windows系统 2.Firefox和Firebug、FirePath组件 3.Elasticsearch环境 4.安装MySQL 5.Python语言环境

基于Python专用型网络爬虫的设计及实现

龙源期刊网 https://www.360docs.net/doc/09977337.html, 基于Python专用型网络爬虫的设计及实现作者:贾棋然 来源:《电脑知识与技术》2017年第12期 摘要:网络爬虫一种网络机器人,也有人说是网页的蜘蛛。随着科技在生活和工作中的应用,计算机也成了人们最为依赖的工具,随着互联网的信息管理量的逐渐增加,搜索引擎也是这个时期被创造并投入使用。但是初被使用的搜索引擎是无法精确搜索到人们需要的信息,面对人们越来越多样的需求,这样的搜索引擎已经无法满足人们的需求了。所以就有人研究了一种专用性的网络爬虫,它能解决传统搜索引擎的出现的局限性,所以该文将会对Python专用型的网络爬虫进行分析和探讨。 关键词:网络爬虫;Python;数据的挖掘;搜索引擎 在很多用户进行搜索引擎的使用中,往往会出现很多不需要的信息,这就是传统搜索引擎的局限性。通过传统的搜索引擎进行信息的搜索中,还需要用户对搜索到的信息进行分析,最终寻找到自己需要的信息。就目前的网络发达现状,这样的搜索引擎是非常浪费时间的,而且准确性也不高,用户很容易丧失搜索的心情。所以,本文将会针对这一问题,对专用型的网络爬虫进行分析,提高信息检索的效率。 1分析Python和爬虫系统设计需求 1.1Python的网络爬虫 网络爬虫主要是通过每个网页的链接地址进行相关内容的查找,然后将结果直接传送给用户,不用通过人工进行浏览器的操作来获取信息了。而Python是一种广泛应用的脚本语言,它自身带有urllib2、urllib相关的爬虫基础库等,在Python语言的基础上开发出的一种开源软件则是Scrapy,它可以在Linux、Windows等多种操作系统中使用。如果被获取的网页经过大量的HTML源代码进行编写,这种情况下需要下载很多内容,但是用户可以在Scrapy爬虫系统上制定一部分模块,从而实现爬虫的功能。 1.2爬虫系统设计需求 在进行网络爬虫系统的开发时,对系统建设进行分析是基础性问题,同时也要将符合设计该系统的代码和功能规范提出来。这样能够促进网络爬虫系统顺利的开发,进而保证开发的结果能够符合系统功能的基本需求。网络爬虫系统的建设基本上同时通过模块化进行的设计,一般每个功能都要自己的模块。这样能够方便以后进行代码的维护,而且还能提高代码的重要性。将整个系统分成不同的模块,之后把每个模块的功能编制完成,这样整个网络爬虫体系的功能就是已经完成了。本系统主要是根据某些用户的上网习惯,进行网络专用型的爬虫系统设计,根据用户的不同需求,确定网络爬虫系统中的各个功能。而且在进行系统的设计时,还要

基于python的网络爬虫设计

基于p y t h o n的网络爬虫设计【摘要】近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的利益,而网络爬虫是其中最为常用的 一种从网上爬取数据的手段。 网络爬虫,即Web Spider,是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页) 开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一 直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛 就可以用这个原理把互联网上所有的网页都抓取下来。 那么,既然网络爬虫有着如此先进快捷的特点,我们该如何实现它呢?在众多面向对象的语言中,首选python,因为python是一种“解释型的、面向对象的、带有动态语义的”高级程序,可以使人在编程时 保持自己的风格,并且编写的程序清晰易懂,有着很广阔的应用前景。 关键词python 爬虫数据 1 前言 本编程设计的目的和意义 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(例如传统的通用搜索引擎AltaVista,Yahoo!和Google 等)作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如: (1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。 (2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 (3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频/视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。 (4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(generalpurpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 编程设计目及思路 学习了解并熟练掌握python的语法规则和基本使用,对网络爬虫的基础知识进行了一定程度的理解,提高对网页源代码的认知水平,学习用正则表达式来完成匹配查找的工作,了解数据库的用途,学习mongodb数据库的安装和使用,及配合python的工作。 (1)以世纪佳缘网为例,思考自己所需要的数据资源,并以此为基础设计自己的爬虫程序。(2)应用python伪装成浏览器自动登陆世纪佳缘网,加入变量打开多个网页。 (3)通过python的urllib2函数进行世纪佳缘网源代码的获取。

基于Python的图片爬虫程序设计

Program Design ? 程序设计 【关键词】Python 语言 网络爬虫 Request-BeautifulSoup 图片爬取 网络爬虫(Web Crawler)又称网络蜘蛛(Web Spider)是一个能够根据既定规则自动提取网页信息的程序,它模仿浏览器发出HTTP 请求访问网络资源,自动获取用户需要的网页数据。已有一些定向网站的网络爬虫,如QQ 空间爬虫一天可抓取400万条日志、说说、个人信息等数据;知乎爬虫爬取各种话题下的优质答案;淘宝商品比价定向爬虫爬取商品、评论及销售数据。 Python 是一种面向对象、解释型、带有动态语义的高级程序设计语言,其语法简洁清晰,并具有丰富和强大的类库,Python 语言支持覆盖信息技术各领域的10万个函数库,依靠开源快速开发,形成了全球最大的编程社区。2017年7月IEEE 发布的编程语言排行榜中Python 高居首位,基于Python 的应用也在计算机各领域大放异彩。Python 包含优秀的网络爬虫框架和解析技术, Python 语言简单易用且提供了与爬虫相关的urllib 、requests 、BeautifulSoup 、Scrapy 等模块。Urllib 模块提供了从万维网中获取数据的高层接口,Requests 模拟浏览器自动发送HTTP/HTTPS 请求并从互联网获取数据,BeautifulSoup 解析HTML/XML 页面获取用户需要的数据。本文基于Python 的Requests-BeautifulSoup 技术构建图片爬虫程序实现对百度贴吧美图图片的快速爬取,并将这些图片保存在本地,方便用户离线浏览和进一步使用。 1 网络爬虫工作原理与Python爬虫技术模块功能 网络爬虫是按照一定规则能自动抓取互 基于Python 的图片爬虫程序设计 文/云洋 联网数据的程序或者脚本。网络爬虫通过网络请求从Web 网站首页或指定页面开始解析网页获取所需内容,并通过网页中的链接地址不断进入到下一个网页,直到遍历完这个网站所有的网页或满足爬虫设定的停止条件为止。Python 语言第三方网络请求库Requests 模拟浏览器自动发送HTTP/HTTPS 请求并从互联网获取数据。BeautifulSoup 解析获取的HTML/XML 页面为用户抓取需要的数据,Beautiful Soup 自动将输入文档转换为Unicode 编码,将输出文档转换为utf-8编码,从而节省编程时间。 1.1 网络爬虫的工作原理 网络爬虫爬取页面就是模拟使用浏览器获取页面信息的过程,其爬取流程一般包含如下4个步骤: (1)模拟浏览器发起请求:通过目标URL 向服务器发起request 请求,请求头header 一般包含请求类型、cookie 信息以及浏览器类型信息等; (2)获取服务器页面响应:在服务器正常响应的情况下,用户会收到所请求网页的response ,一般包含HTML 、Json 字符串或其他二进制格式数据(如视频,图片)等; (3)获取页面内容解析:用相应的解析器或转换方法处理获取的网页内容,如用网页解析器解析HTML 代码,如果是二进制数据(如视频、图片),则保存到文件进一步待处理; (4)存储数据:网页解析获取的数据可以用CSV 、Json 、text 、图片等文件存储,也可以sqlite 、MySQL 或者MongoDB 等数据库存储。 1.2 Python第三方库Requests模块 Requests 是用Python 语言编写,使用Apache2 Licensed 许可证的HTTP 库。Python 标准库中自带的urllib2模块和httplib 模块提供了所需要的大多数HTTP 功能,Requests 使用urllib3模块,支持HTTP 连接保持和连接池,支持使用cookie 保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL 和POST 数据自动编码。 通过pip 命令($pip install requests )安装Requests 模块。urllib 提供了一系列用于操作URL 的功能,urllib 的request 模块可以方便地访问抓取URL(统一资源定位符)内容,urllib.request 模块中常用的函数方法如表1所示。使用requests 方法后,会返回一个response 对象存储服务器响应的内容,如r.status_code (响应状态码)、r.text (字符串方式的响应体,会自动根据响应头部的字符编码进行解码)、r.json (Requests 中内置的JSON 解码器)、 r.content (字节方式的响应体,会自动为你解码 gzip 和 de?ate 压缩)等。 1.3 Python第三方库Beautiful Soup模块Beautiful Soup 是用Python 写的一个HTML/XML 的解析器,它可以处理不规范标记并生成分析树(parse tree),同时提供了简单的python 函数处理导航(navigating )、搜索并修改分析树。 通过pip 命令安装($ pip install beautifulsoup4)Beautiful Soup 模块。BeautifulSoup 将HTML 文档转换成一个树形结构,每个节点都是Python 的对象,所有对象可归纳为4种,如表2所示。 2 帖吧图片爬虫程序设计 百度贴吧是全球最大的中文社区。贴吧是一种基于关键词的主题交流社区,贴吧结合搜索引擎建立一个在线的交流平台,让那些对同一个话题感兴趣的人们聚集在一起,方便地展开交流和互相帮助。设计爬虫程序爬取百度帖吧(https://www.360docs.net/doc/09977337.html, )内的美图吧图片,运行爬虫程序时提示用户输入想要爬取网站的url ,爬虫程序修改请求头信息,模拟浏览器对贴吧内的帖子依次使用get 请求,进入帖子后根据规则找到所有图片标签,获取帖子内的图片资源url ,并将其依次下载到本地存储,所有帖子爬取完成后按enter 退出,运行中途也可以使用ctrl+c 强制退出程序。 基于Python 的Requests-BeautifulSoup 技术构建图片爬虫程序,使用requests 模拟浏览器请求网页,用random 生成随机数选取模拟的浏览器,用BeautifulSoup 支持的Python 内置标准HTML 解析库解析请求网页返回的数据,使用urllib.request.urlretrieve( )下载图片和各种网络请求。2.1 爬虫准备 开发图片爬虫程序使用Python3.6版本,主要用到了urllib 的requests 模块、BeautifulSoup 模块和random 模块,模块是包含变量、函数或类的定义程序文件,使用模块前通过import 导入这些模块。定义了两个全局变量null 和true 并初始化,以避免当访问网址url 中出现null 和true 字样时,Python 会将null 和true 当成变量未初始化而报错。 import urllib.request from bs4 import BeautifulSoup import random global null #设置了两个全局变量null 和true 并初始化 null='' global true

相关文档
最新文档