




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京林业大学本科毕业论文(设计)基于Python的网络爬虫摘要随着计算机技术的不断发展,新的编程语言层出不穷,Python,Html正是其中的佼佼者。相比较早期普及的高级语言(Java,C语言)等,Python有着更加实用的模块和库,虽然牺牲了底层性,但却更加方便用于开发小型项目。此外,Html也已经被普遍用于网站前端,标记语言的特性结合CSS丰富了网页内容和形式,某种意义上也促进了更加人性化的电子商务系统的发展。本文的网络爬虫正式基于Python语言编写的,通过对Html抓取加工将数据可视化,以监测逐渐从线下转移到线上,并随着电子商务发展越发简单普遍难以追踪的非法野生动物贸易。本文首先对计算器语言的发展,尤其是Python和Html的优势、基础概念以及性能进行介绍。最后着重介绍可以实现检测网络上非法野生动物贸易的爬虫的设计和实现。程序主要包括三个模块:URL解析,Html抓取,本地输出。Python的开发环境和工具分别是OS X和PyChram CE,主要调用了Python中的Urllib2,beautifulsoup模块。最终的程序可以实现对指定网站,指定关键词抓取指定内容,保存内容到本地,以便于追踪和检测。 关键字:Python,HTML,爬虫,非法野生动物贸易Python-Based Illegal wildlife trade SpiderElectronics & Information Technology Program 11-1Haozhi ZhuSupervisorRui ZhaoAbstractWith 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 concepts and performance are introduced. The last focuses on the design and implementation can be achieved illegal wildlife trade on the reptile detection network. Program includes three modules: URL parsing, Html capture, data visualization output. Python development environment and tools are OS X and PyChram CE, mainly call in Python Urllib2, re and os module.The final program can be specified site designated keyword to crawl the specified content, and output in PC, in order to track and detect.Key words: Python,Html,spider,Illegal wildlife trade目录基于Python的网络爬虫IPython-Based Illegal wildlife trade SpiderII一 绪论11.1毕业设计背景与目的11.2国内外研究状况11.3论文结构和内容1二 相关技术介绍22.1 Python语言22.1.1 Python语言的产生和发展历史22.1.2 Python语言的原理32.1.3 Python语言的特色32.1.4 python语言的缺点42.2 URL42.2.1 URL的定义42.2.2 URI和URL的对比和举例42.2.3 URL组成42.3 Html52.3.1 定义52.3.2 Html原理52.3.3 Html特点52.4 开发工具52.4.1 Chrome52.4.2 PycharmCE62.4.3 终端6三 项目需求及设计73.1输入板块分析73.2需要抓取的内容83.3 本地输出8四 项目分析及实现94.1 输入模块94.1.1 目标网站URL94.1.2 Urillib2 模块94.1.3 伪装94.2 抓取模块94.2.1 URL与html94.2.2 Beautiful Soup库94.2.3 抓取方法94.3 输出模块104.5最终效果11五 项目测试125.1 抓取结果错误测试125.2 显示结果错误测试125.3 网络连接测试12六 结论136.1 收获与成长136.2 不足与展望13致谢14参考文献1515一 绪论1.1毕业设计背景与目的近些年,随着以“淘宝”为首的电子商务技术快速发展,越来越多的线下交易逐渐走向线上,其中就包括非法野生动物制品贸易。技术的进步,让大量的非法野生动物贸易成为可能,其灵活的展示方式和便捷的交易方式不仅让网络上相关的交易越发繁荣,相关信息的繁多与复杂也让仅通过人力查看监控变得越发艰难。与之对应的是搜索引擎技术的发展。比如google,百度。虽然网络中的信息越来越多,越来越复杂,搜索引擎却可以针对某一个关键词对全网进行有效的搜索。不过它们程序的技术内幕一般都不公开,此外庞大的搜索引擎最终显示的结果是全网络遍历结果的最优解,而很难做到有效搜索针对性网站针对关键词的搜索。并且,搜索引擎为了节约搜索速度,多使用比较底层的高级语言编写,庞大且复杂,并不是很好的参考对象。一方面是网络上越发猖獗的野生动物贸易,越来越多的交易使用黑话、特别的缩写在一些小众网站中形成稳定的供应链和交易圈。另一方面搜索引擎技术虽然发展迅速却难以针对性的监测,不断变化的黑话和网站小众性的干扰更让批量抓取信息方便监测变得越发困难。对于这种困境,使用针对性设计网络爬虫来监测相关的交易是一个相当不错的选择。不同于搜索引擎,爬虫程序是一个自动获取网页的程序,可以对针对性的网页内容中的特定内容,做出有效的抓取,并按照设计保存在本地,方便使用。并且,区别于传统的爬虫和引擎,我选择使用Python来编写爬虫。不同于传统高级语言(C,Java等),Python相对简单易于完成小型项目,其丰富的模块和良好的兼容性也让用其成为编写爬虫程序的优秀选择之一。1.2国内外研究状况正如上文所提到的,爬虫在搜索引擎中比较普遍。目前几种比较常用的爬虫实现策略:广度优先的爬虫程序,Repetitive爬虫程序,定义爬行爬虫程序,深层次爬行爬虫程序。此外, 还有根据概率论进行可用Web页的数量估算, 用于评估互联网Web规模的抽样爬虫程序; 采用爬行深度、页面导入链接量分析等方法, 限制从程序下载不相关的Web页的选择性爬行程序等等。事实上Google的部分爬虫程序就是基于Python的,但由于Python自身的限制,更多是作为一种粘合剂配合其他语言编写的内核运行。此外,由于网络非法野生动物贸易的监控并不具有商业性质以及其较为复杂和独特的小众需求,并无相关的企业从事相关工作。并且由于WWF组织本身的成员多以生物学家为主,并没有相关的专业人员从事相关开发。1.3论文结构和内容全文介绍了基于Python的网络爬虫从确定论题到最终实现效果的过程,具体内容入下:(1)第一章绪论主要说明本次毕业设计项目的背景和目的,包括国内外研究现状以及本次论文的结构。(2)第二章相关技术介绍主要说明本次毕业设计项目涉及到的相关语言和对应的工具,包括Python,Html,URL等,以及相关的开发工具Chrome, PycharmCE。(3)第三章项目需求与设计主要说明本次毕业设计项目想法成型的过程和解决问题的思路(4)第四章项目分析和实现,主要是将第三章设想变成现实的过程,结合实例说明操作。(5)第五章项目测试主要说明了在实际编程过程中测试出错误时的解决方案。(6)第六章分总结整个项目的收获与不足。(7)最后是感谢和参考资料。二 相关技术介绍2.1 Python语言2.1.1 Python语言的产生和发展历史Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。之所以选中Python(根据英国广播公司的节目“蟒蛇飞行马戏”)作为程序的名字。ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是非开放性造成的。Guido 决心在Python中避免这一错误。同时,他还想实现在ABC 中闪现过但未曾实现的东西。就这样,Python在Guido手中诞生了。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。Python语言的创造者Guido van Rossum是根据英国广播公司的节目“蟒蛇飞行马戏”命名这个语言的,并非他本人特别喜欢蛇缠起它们的长身躯碾死动物觅食。Python已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,python的使用率是呈线性增长。图2.1 计算机语言热门程度排行2011Fig.2.1 Hot Computer Language in 2011由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。此外,Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。2.1.2 Python语言的原理Python语言的基本原理可以概述为Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。详细步骤如下:(1)字节码在Python虚拟机程序里对应的是PyCodeObject对象。.pyc文件是字节码在磁盘上的表现形式。(2)pyc文件PyCodeObject对象的创建时机是模块加载的时候,即import。Python test.py会对test.py进行编译成字节码并解释执行,但是不会生成test.pyc。如果test.py加载了其他模块,如import util,Python会对util.py进行编译成字节码,生成util.pyc,然后对字节码解释执行。如果想生成test.pyc,我们可以使用Python内置模块py_compile来编译。加载模块时,如果同时存在.py和.pyc,Python会尝试使用.pyc,如果.pyc的编译时间早于.py的修改时间,则重新编译.py并更新.pyc。(3)PyCodeObject,Python代码的编译结果就是PyCodeObject对象。(4)pyc文件格式,加载模块时,模块对应的PyCodeObject对象被写入.pyc文件(5)分析字节码,Python提供了内置函数compile可以编译Python代码和查看(7)解析指令序列(8)执行字节码2.1.3 Python语言的特色简单性:Python是一种代表简单主义思想的语言,以优雅而著称。良好的阅读性让不少人戏称Python为伪代码。它使你能够专注于解决问题而不是去搞明白语言本身。易学性:就如同你即将看到的一样,Python极其容易上手。一方面前面已经提到了,Python有极其简单的语法,另一方面,Python虽然也有严格的格式要求,但相比较其他高级语言几乎可以忽略不计。开源性:Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。高层语言:当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga等等。编译性:一个用编译性语言比如C或C+写的程序可以从源文件(即C或C+语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。面向对象性:Python即支持面向过程的编程也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C+和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。可扩展性:如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C+编写,然后在你的Python程序中使用它们。可嵌入性:你可以把Python嵌入你的C/C+程序,从而向你的程序用户提供脚本功能。丰富的库:Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。2.1.4 python语言的缺点速度慢:和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。无法加密:如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。2.2 URL2.2.1 URL的定义统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。2.2.2 URI和URL的对比和举例简单的来讲,URL就是在浏览器端输入的这个字符串。在理解URL之前,首先要理解URI的概念URI指的是Web上每种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个通用资源标志符(Universal Resource Identifier, URI)进行定位。 URI通常由三部分组成:(1)访问资源的命名机制;(2)存放资源的主机名;(3)资源自身 的名称,由路径表示。如下面的URI:/myhtml/html1223/我们可以这样解释它:(1)这是一个可以通过HTTP协议访问的资源,(2)位于主机 上,(3)通过路径“/html/html40”访问。 2.2.3 URL组成URL的格式由三部分组成: (1)第一部分是协议(或称为服务方式)。(2)第二部分是存有该资源的主机IP地址(有时也包括端口号)。(3)第三部分是主机资源的具体地址,如目录和文件名等。第一部分和第二部分用“:/”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。 2.3 Html2.3.1 定义超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准, 它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果2.3.2 Html原理(1)用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;(2)浏览器开始载入html代码,发现标签内有一个标签引用外部CSS文件;浏览器又发出CSS文件的请求,服务器返回这个CSS文件;(3)浏览器继续载入html中部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;(4)浏览器在代码中发现一个标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面 的代码;(5)服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;(6)浏览器发现了一个包含一行Javascript代码的标签,赶快运行它;Javascript脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个 (style.display=”none”)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染这部分代码;(7)Javascript让浏览器换了一下标签的CSS路径;浏览器召集了在座的各位们,向服务器请求了新的CSS文件,重新渲染页面。2.3.3 Html特点超级文本标记语言文档制作不是很复杂,但功能强大,支持不同数据格式的文件镶入,这也是万维网(WWW)盛行的原因之一,其主要特点如下:简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便。可扩展性:超级文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超级文本标记语言采取子类元素的方式,为系统扩展带来保证。平台无关性:虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超级文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。通用性:另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。2.4 开发工具2.4.1 ChromeGoogle Chrome,又称Google浏览器,是一个由Google(谷歌)公司开发的网页浏览器。该浏览器是基于其他开源软件所撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于称作Chrome的网络浏览器图形使用者界面(GUI)。软件的beta测试版本在2008年9月2日发布,提供50种语言版本,有Windows、Mac OS X、Linux、Android、以及iOS版本提供下载。2013年9月,Chrome已达全球份额的43%,成为全球使用最广的浏览器。在本次毕业设计项目中,Chrome不仅是查找网页的工具,也是审阅Html寻找关键的重要工具。2.4.2 PycharmCEPyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。本次毕业设计项目中,Pychram CE承担了全部的Python开发工作,其优秀的自动关联和记忆关键词功能,很好的提高了效率,减少不必要的错误。2.4.3 终端终端是OS X中操作系统指令的应用,在本次项目中终端在最终的.py文件执行中扮演重要的角色。三 项目需求及设计3.1输入板块分析要收集有效的网络非法野生动物贸易信息,首先要确定这样的交易主要活跃在什么样的网站,网站中什么样的模块中。由于这些交易并不合法,卖家和卖家都有一套并非正常表达的“行话”“黑话”来避免被搜索引擎直接搜索到,下面是WWF下属的专门从事相关保护工作的Traffic提供的目标网址和关键词。这些信息将有助于我们搜索到相关的交易信息,方便后续的抓取页面中信息的工作。3,1常见交易论坛Table.1 Common Trade Website网站名称网址中华古玩网/盛世收藏网/文玩天下/58同城/雅昌艺术网论坛/search.php中国收藏热线/翰龙雅集/拍拍网/淘宝/博宝艺术品商城/华夏收藏网/shop/说宝/易玩中国网/中国收藏网汉唐收藏网/雅昌交艺网/中国古玩论坛(杂项区)上海文玩/forum.php赶集网/百姓网/易趣/阿里巴巴中国/阿里巴巴国际/3,1常见网上贸易物种及代号Table.2 Common Keywords In Trade On The Internet常见网上贸易物种及代号物种名用途常用代码象工艺品象牙,XY,牙雕,xiangya,芯料,xiang牙,象ya,白塑料,象 牙,象牙,血牙,牙尖,太阳芯,灵芯,牙角,X牙,ivory,果冻,非洲,网纹,黄料,血料犀牛工艺品,药材犀角,犀牛角,XJ,xi角,xijiao,角雕,犀jiao,犀 角,黑塑料,安宫牛黄丸,安宫,非洲虎工艺品,酒,药材hu骨,虎gu,虎骨,掌骨,Hugu,王骨,H骨,大猫骨,大猫,虎爪豹工艺品,药材豹骨,豹,XB玳瑁工艺品,药材玳瑁,DM,daimao海龟工艺品海龟穿山甲工艺品,药材甲片,穿山甲,摸金,C山甲高鼻羚羊工艺品,药材羚羊角,赛加,SJ,羚羊盔犀鸟工艺品犀鸟,鹤顶红,鸟头,鸟嘴,NT其他珍贵材料,珍稀材料,高档材料,重器3.2需要抓取的内容确认了需要监测的网站和关键词之后,下一步就是其URL对应的网页内容进行抓取。首先需要遍历整个网页的Html代码,需找其中有价值的信息,包括交易品名称,交易品链接,卖家信息,交易品照片信息以及交易发布时间。特别是交易品的链接和照片,由于非法野生动物贸易品本身价值高昂,造假就成了普遍现象,最终的判断仍需要人肉眼进行鉴别,当然这是后话了,并不在本次毕业设计项目之中。3.3 本地输出完成了抓取之后,还需要将抓取的内容有效的排榜方便阅读。更重要的是可以保存到本地,方便查看和反馈给WWF进一步追踪和查处。最好的是可以一个关键词一个链接的输出,方便管理并避免重复作业。四 项目分析及实现4.1 输入模块输入模块主要包括特定的URL以及关键词内容,在Python爬虫中,我们使用urllib2这个Python内置模块来识别读取相关的URL。4.1.1 目标网站URL 为了更加有效的找到关键字对应的信息,本项目中所有的URL不仅仅是目标网站的URL。由于遍历整个网站需要消耗更多的资源,也并不能很好的体现Python的优势,更是添加了开发的难度,我选择使用目标网站论坛自身的搜索板块的URL作为程序读取的内容。这样既可以降低工作量,也可以更加方便的抓取相关的信息。4.1.2 Urillib2 模块Urllib2模块最基础的功能是让客户端与服务器端通过request与response来沟通,客户端先向服务端发送request,然后接收服务端返回的response。urllib2提供了request的类,可以让用户在发送请求前先构造一个request的对象,然后通过urllib2.urlopen方法来发送请求。除此之外,Urllib2还可以完成如Proxy的设置,Timeout设置,在HTTP Request中加入特定的 Header,Redirect,设置Cookie,使用 HTTP的 PUT和 DELETE方法,得到 HTTP 的返回码,Debug Log等用途。4.1.3 伪装在实际使用中,由于不少网站都以及具有的反爬虫的功能,为了能够不被识别,我们需要将每次访问伪装成浏览器进行操作,并设置时间限制防止被判别为程序抓取,屏蔽IP。4.2 抓取模块抓取模块式整个项目的核心,如何准确的抓取必要的内容,不被其他的内容干扰是该模块需要考虑并不断优化的地方。4.2.1 URL与html确认URL并能够成功通过程序访问该地址返回Html代码时,就可以考虑抓取其中的有效信息了,在本项目中,我们使用Python开源社区开发的Beautiful Soup模块作为抓取的核心。4.2.2 Beautiful Soup库Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。4.2.3 抓取方法以实际的网页为例,这是华夏收藏网()中搜索关键词牙雕后显示的界面。我们可以看到每一条交易信息在Html中都被封装一个固定的标签中。而整个交易信息模块又被封装在一个名为的标签中。图4.2 网页Html显示截图Fig.4.2 Web Html screenshot 使用BeatifulSoup可以层层筛选标签,直到最终抓取到想要的信息。其中最为核心的代码如下:#href_listi.get(href),image_listi.get(data-original),title_listi.get_text(),seller_listi.get_text(),time_listi.get_text()该段代码包含5个参数,分别对应交易品名称,交易品链接,卖家信息,交易品照片信息以及交易发布时间。而在Html 代码中,上面的每一个信息都藏在比较隐蔽的位置,Beautiful Soup可以遍历并搜索指定的并通过其中包含的不同函数输出本身的内容或者之间所包含的内容。4.3 输出模块能够有效的抓取html里面的内容之后,输出相关的数据并本地化保存需要调用Python中包含的open函数。其构造为open(filename,访问方式r,w,a,b) ,其中r:读操作;w:写操作;a:添加操作;b:二进制存取操作,如果缺省就是r。Python中文件操作可以通过open函数,这的确很像C语言中的fopen。通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作。图4.3 抓取内容显示效果Fig.4.2 With Spracy The Html Content 4.5最终效果在终端的相应目录中找到.py文件,使用python .py文件即可执行,出线下面图片所示的页面,输入关键词和对应的URL之后,如果保存成功会有相应的提示。图4.5.1 程序运行界面Fig.4.5.1 Table of Running Program 打开.py文件所在文件夹即可见生成的.txt文件,搜索多个关键词之后,会有如下的效果:图4.5.2 抓取后显示结果Fig.4.5.2 The result of program五 项目测试5.1 抓取结果错误测试抓取结果错误测试是指将需要抓取的多个元素,一一单独去除输出。确认每一个单独的元素都可以正常稳定抓取,再调整排序,保证比较舒适的显示状态即可。在实际过程中还会遇到ACSII码无法正常显示的情况。处理这种情况可以在对应的变量后面添加decode(UTF-8)来解决。5.2 显示结果错误测试显示结果错误测试主要是对已经保存到本地的文件标题以及内容的测试,可以通过基本的对比和匹配查看是否出现错误。如果出现显示错误的情况,需要向上溯源查找问题具体的原因,在抓取结果测试无误的情况下,多半是输入的URL不准确或网站服务不稳定造成的。5.3 网络连接测试报错的数字对应的具体情况和处理方案如下:5.3 网络连接测试Table.3 Network Test 编号和意义解释解决措施100:继续客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应101:转换协议在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。102:继续处理由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。201:请求完成创建了新资源。新创建资源的URI可在响应的实体中得到爬虫中不会遇到202:请求被接受,但处理尚未完成处理方式:阻塞等待204:服务器端已经实现了请求,但是没有返回新的信息如果客户是用户代理,则无须为此更新自身的文档视图。 丢弃400:非法请求丢弃401:未授权丢弃403:禁止丢弃404:没有找到丢弃500:服务器内部错误服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。501:服务器无法识别服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,无法支持其对任何资源的请求。502:错误网关作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。六 结论6.1 收获与成长相对于完全手工抓取非法野生动物贸易信息,本次毕设的最终成果可以一定程度上节省人力资源,也更加方便追踪和储存相关的信息。通过这次毕业设计,不仅仅体会到技术的世界日新月异,也在感受各种技术的出现和不断发展促进了各行各业的发展。虽然也滋生了一些并不总是积极的东西,但此消彼长,技术对抗技术也一定会值得讨论的话题。相信爬虫的编写和可塑性会越来越好,也能够更加智能的开展。这次毕设项目不仅仅让我感受到了编程语言,尤其是Python的魅力,也通过解决实际问题的方式,了解更多此前仅从书面上不曾学会的东西。Python的优雅,易于实现以及丰富的库都给我留下了深刻的印象。尤其是开源社区和开源文档的出线,让我有理由相信未来的程序发展会越来越多的成为平常人而不只是程序员所需要具备的特权。此外,因为实际项目需要而接触并慢慢熟悉了以Html为代表的网页前端语言的动向和发展,也打开了另一扇窗户。6.2 不足与展望虽然本次毕业设计的最终成果基本可以满足需求,但是离一开始的设想仍然有不少的距离。主要的遗憾以及希望继续改进的地方有:(1) URL中对应的中文随机变化的问题。由于多数网站是使用自己的加密方式,中文输入后会对应转成随机的数字英文符号代码,这给批量抓取带来了巨大的麻烦。(2) BeautifulSoup页面抓取格式兼用性的问题。由于BeautifulSoup在抓取指定内容时依靠的是Html中的信息,所以每一个网站需要单独对内容进行一次匹配,无法兼容其他的网站。(3) 尝试其他的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025买卖合同主体变更协议 买卖合同主体变更协议范本
- 2025国有公司合同管理制度与优化方案
- 标准员试题A-E-5套及参考答案
- 海外利益安全的概念
- 2025年海东考货运从业资格证
- 2025年哈尔滨货运从业资格考试模拟考试题目
- 廉政谈话本人基本情况
- 第三节有机化合物的命名
- 职业暴露的处理流程和上报流程
- 操场草坪施工合同范本
- 2024年度糖尿病2024年指南版课件
- 2024年郑州黄河护理职业学院单招职业技能测试题库及答案解析文档版
- 非机动车交通管理及规划研究
- 劳务派遣及医院护工实施预案
- 华电行测题库及答案2024
- 产后病(中医妇科学)
- 苏州市2023-2024学年高一上学期期末考试数学试题(原卷版)
- 社区获得性肺炎教学演示课件
- 农村蓝莓树补偿标准
- 市级临床重点专科申报书(麻醉科)
- 1.3.1 三角函数的周期性课件
评论
0/150
提交评论