基于Python的网络爬虫设计与实现.docx
《基于Python的网络爬虫设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Python的网络爬虫设计与实现.docx(44页珍藏版)》请在课桌文档上搜索。
1、基于Python的网络爬虫设计与实现摘要:从互联网时代开始,网络搜索引擎就变得越发重要。大数据时代,一般的网络搜索引擎不能满足用户的具体需求,人们更加注重特定信息的搜索效率,网络爬虫技术应运而生。本设计先对指定URL的网址相关网页进行分析,找出网页内目标信息所在的URL信息规律;然后选择BeautifulSoup模块或IXml的html模块编写函数分级爬取这些URL;最后将URL对应的网页中的信息归类保存到文本文件中。然后利用jieba模块基于TRIDF指标对爬取的文本中的信息进行分析,再找出词频高的词,做进一步分析。基于Python实现网络爬虫程序,先对我校近几年新闻网页进行分析,找出新闻中
2、的高频词,并绘制词云图;然后针对这次新型冠状病毒所造成的疫情,从腾讯新闻网中爬取疫情相关信息、,同时根据相关信息绘制疫情分布图。两个爬虫实例表明本设计的可行性和有效性。关键词:网络爬虫,互联网,校园,疫情DesignandimplementationofwebcrawlerbasedonPythonAbstract:SincetheInternetera,Internetsearchengineshavebecomemoreandmoreessential.Inperiodofbigdata,commonnetworksearchenginescannotsatisfytheexactneed
3、sofusers,Peopleattachimportancetothesearchefficiencyofspecificinformation,andwebcrawlertechnologyemergeasthetimesrequire.ThisdesignfirstanalyzestheURLrelatedwebpagesofthespecifiedURLtofindouttheURLinformationruleofthetargetinformationinthewebpage;thenselectthebeautifulsoupmoduleortheHTMLmoduleofIxml
4、towritethefunctiontocrawltheseURLshierarchically;finally,theinformationinthewebpagescorrespondingtotheURLisclassifiedandsavedinthetextfile.ThenusethejeebamoduletoanalyzetheinformationinthecrawledtextbasedonTFIDFindex,andthenfindoutthewordswithhighwordfrequencyforfurtheranalysis.BasedonPython,novelco
5、ronavirusisfirstanalyzed.Wefindoutthehighfrequencywordsinthenewsanddrawthewordcloudmap.Then,inresponsetotheepidemicsituationcausedbynovelcoronavirus,thisdesigncrawledtheepidemicsituationrelatedinformationfromTencentNewsNetworkanddrewtheepidemicsituationdistributionmapaccordingtotherelatedinformation
6、.Twocrawlerexamplesshowthefeasibilityandeffectivenessofthedesign.Keywords:Crawler,Intemet,campus,epidemicsituation目录第1章绪论11.1 研究背景和实际意义11.2 研究现状11.3 研究方法和内容21.3.1 研究方法21.3.2 研究内容2第2章基于PythOn的网络爬虫技术的相关方法32.1 网页分类32.1.1 静态网页32.1.2 动态网页32.2 正则表达式32.3 中文分词42.4 词云图生成52.5 数据管理62.6 BeautifulSoup6第3章基于PythO
7、n的校园网新闻信息获取与分析73.1 基于Python的校园网新闻信息爬虫实现73.1.1 网页信息获取103.1.2 版块新闻链接列表搜索113.1.3 版块新闻网页新闻内容获取133.2 基于Python的校园网新闻信息分析实现143.2.1 新闻信息数据管理143.2.2 新闻内容文本分词163.2.3 停用词删除173.2.4 高频词词云制作183.2.5 新闻内容词语分析19第4章基于Python的新型冠状病毒疫情爬虫实现204.1 每日疫情数据获取及曲线图绘制214.1.1 每日疫情数据爬取程序现实214.1.2 每日疫情数据曲线图绘制程序现实234.2 各地疫情数据获取及曲线图绘
8、制254.2.1 各地疫情数据爬取程序现实264.2.2 各地疫情当前数据曲线图绘制程序现实28第5章总结31参考文献32致谢33第1章绪论1.1研究背景和实际意义21世纪初起,互联网得到了蓬勃的发展,万维网成为海量信息的载体,人们希望能够有效利用万维网里的数不胜数的数据信息,所以网络信息提取成为这一愿望实现的关键。网络世界里的信息成千上万,特别是近年来信息量呈指数增长,人们更加注重从互联网上搜索自己想要信息的效率。人们开始运用搜索引擎来帮助自己在互联网中查找所需要的信息。但是一个一般的搜索引擎必然存在着一定的局限性,不同背景、不同深度、不同领域的用户检索的期望信息一定是不同的,互联网用户只想
9、快速找到自己所需求的信息,但一般的搜索引擎返回的搜索结果包含了庞大的无效信息。通用搜索引擎在一般情况下不能提供精准且专业的信息搜索,同时查准率低、无效信息多、也无法避免广告推送。因此一般的搜索引擎不可能满足特定用户的专业需求,对于这特等的用户需求则需要更加准确的搜素引擎,在大量的需求下,网络爬虫的技术得以快速发展。网络爬虫技术是一种个性化互联网数据信息搜索的网络数据信息获取技术。网络爬虫的英文名称为WebSpidcr0互联网就像一张巨大且密集的蜘蛛网,Spider这只蜘蛛就在这张网上不断移动。一个生动形象的比喻就是蜘蛛(WebSPider)通过网线的颤抖(网页的链接地址)来搜寻食物(网页)。从
10、任意一个网页(一般情况下是首页)开始,读取网页中数据,从这个网页里搜索其它链接的地址,通过所找的链接地址去找下一个网页。按照这种方式不断循环,直到所选取的网站里全部的网页全部抓取完为止。假定我们把整个互联网比喻成一个网站,网络蜘蛛就可以运用上述方法把互联网中一切的网页都抓取下来。在用户专业性需求下,网络爬虫程序可以在指定网页页面搜索需要的相关信息,而过滤掉其他繁杂的冗余信息,并通过程序对搜索到的信息进行归类保存。大数据时代的到来,意味着更多信息涌入,想要在互联网这片大海中捞到想要的东西也愈发困难,所以网络爬虫的意义就是越显重要。能够帮助我们节省时间和精力,同时也能确保我们找到我们想要的东西。在
11、这个节奏越来越快的世界中,网络爬虫凭借这高效这一点,就有着无穷的意义与价值。12研究现状在上世纪九十年代在麻省理工学院一位叫MattheW的老师就研发出第一款有文献记载的爬虫。爬虫作为核心的搜索引擎技术已经历经近30年的发展,网络爬虫已日趋多样。为满足不同用户不同的需求,人们开发了类型繁多的爬虫。但爬虫技术在西方世界迅速发展的情况下,2004年前我国内基本对于网络爬虫技术没有什么关注,从2005年开始国内才开始关注爬虫技术。目前需求量也是也来越大,急需这方面人才。目前爬虫也只能分为两大类,一类为Google之类的大型搜索引擎的大型爬虫,另一类就是个人型爬虫或中型爬虫。网络爬虫开源系统喷涌式出现
12、,因此人们研发一个简单的抓取系统变得不再困难,但是由于大量程序开源,使得很少有人愿意潜心研究网络爬虫的关键技术。因此在这种不良的环境下,小型爬虫系统质量不高。所以对于中小爬虫的发展还是任重道远。1.3研究方法和内容1.3.1 研究方法网络爬虫应用宽度搜索技术,对URL进行分析,去重。网络爬虫使用多线程技术,让爬虫具备更强大的抓取能力。网络爬虫还要完成信息提取任务,对于抓取回来的网页进行筛选、归类。在学习使用PythOn软件的同时,复习网络知识,进而掌握基于PythOn软件的网络爬虫程序编写方法。本设计拟对我校近几年新闻网页(WWW)进行分析,获取相关网页URL及网页文本内容,然后利用jieba
13、模块基于TFTDF指标对爬取的文本信息进行分析,找出新闻中的高频词,并绘制词云图。同时针对今年对我国发生的新型冠状病毒肺炎疫情,利用动态网页获取方法从腾讯新闻网站()下载疫情分析数据,并绘制疫情相关图。1.3.2 研究内容本设计具体内容安排如下:第1章:介绍网络爬虫的历史背景和实际现状,阐述了本设计所使用的爬虫技术,简单描述了本设计的两个实际应用的实现。第2章:介绍一些基于Py由On的网络爬虫的相关方法。第3章:校园网新闻信息获取的程序介绍,分析和运行结果的图片展示。第4章:新型冠状病毒疫情爬虫的程序介绍,分析和运行结果的图片展示。第5章:总结。第2章基于PythOil的网络爬虫技术的相关方法
14、2.1 网页分类互联网里众多网页主要将其分为静态和动态。当然静态是相对于动态而言的,比不是说静态就是一点不会变动的。2.1.1 静态网页在网站设计中,纯粹HTML(标准通用标记语言下的一个应用)格式的网页通常被称为“静态网页”,静态网页是标准的HTML文件,它的文件扩展名是.htm、.html,可以包含文本、图像、声音、FLASH动画、客户端脚本和ACtiVeX控件及JAVA小程序等。静态网页是网站建设的基础,早期的网站一般都是由静态网页制作的。2.1.2 动态网页动态网页URL的后缀不是.htm、.html、.Shtm1、.Xml等静态网里的常见形动态网页制作格式,而是以.aspx、.asp
15、、jsp、.php、.perl、.Cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号一一。动态网页一般以数据库技术为基础,可以大大降低网站维护的工作量,采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等。同时动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页。不只有HTML代码写出的网页被称为动态网页,这些网页一般由CSS,JavaScripl代码和HTML代码一起构成网页,它们用Ajax动态加载网页的数据不一定出现在HTML代码中,这就需要复杂的操作。2.1.3 2正则表达式正则表达式概念:是指一
16、个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。正则表达式的特点是:1 .灵活性、逻辑性和功能性非常强。2 .可以迅速地用极简单的方式达到字符串的复杂控制。re模块使Python语言拥有全部的正则表达式功能。比如:re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回noneore.search扫描整个字符串并返回第一个成功的匹配。pile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正
17、则表达式匹配和替换。compile函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,供match()和search()这两个函数使用。re.findall方法能够以列表的形式返回能匹配的子串2. 3中文分词中文分词,即ChineseWordSegmentation,将一个汉字序列进行切分,得到一个个单独的词。表面上看,分词其实就是那么回事,但分词效果好不好对信息检索、实验结果还是有很大影响的,同时分词的背后其实是涉及各种各样的算法的。中文分词主要应用于信息检索、汉字的智能输入、中外文对译、中文校对、自动摘要、自动分类等很多方面。下面就以信息检索为例来说明中文分词的应用。例如:”
18、制造业和服务业是两个不同的行业”和“我们出口日本的和服比去年有所增长”中都有“和服”,而被当作同一类来处理,结果是检索“和服”的相关信息,会将他们都检索到,在信息量少的情况下,似乎还能够忍受,如果是海量信息,这样的结果就会令人讨厌了。通过引入分词技术,就可以使机器对海量信息的整理更准确更合理,在“制造业和服务业是两个不同的行业”中“和服”不会被当做一个词来处理,那么检索“和服”当然不会将它检索到,使得检索结果更准确,效率也会大幅度的提高。所以中文分词的应用会改善我们的生活,使人们真正体会到科技为我所用。从排序里取出预定前N个最优文本特征作为原始语料文本特征子集。基于词频和逆文档频率的TF-ID
19、F算法是一种十分流行的文本特征选取算法。对于文档式的特征词*其在文档d中出现的总次数为&,;文档d,中出现的词的总数JN=斗标翻库中途总数;间:t0标包含词语(的蜡总数。TF和IDF分别为词频和逆文档频率,TF-IDF是一种常用的加权指标,多用于信息检索与数据挖掘。基于TF-IDF的特征选择思想是:如果某个词在某篇文章中出现的频率很高,在其他文章中出现的频率相对较低,那么就说明这个词在这篇文档中比较重要,即可作为这篇文章的一个分类特。TF-IDF=TFxIDFf公式中,N,表示包含词语L的文档总数,如果L不在语料库中,则分母项为Q因此一般情况下使用N,+l作分母,一般用IDF平滑后的公式:词频
20、IH表示词语在文档d,中相对于语料库所有文件的出现概率,该词在文档d中出现次数越高,开,值就越大;逆文档频率IDR则用另一种形式表示相反的情况,反应包含词讯的文档d9相对于语料库所有文档出现的逆概率,包含该词的文档4出现的次数越多,逆文档频率值越低。某词语在某特定文件内的高词频,以及其在整个文件集合中的低逆文档频率,可以得出较高的TF-IDF值。基于TF-IDF指标可以过滤掉语料库文档中普遍出现的词语,保留在某些文档中出现频次较高的具有丰富分类特性的重要词语(后文简称特征词)。2.4 词云图生成在现在互联网信息时代,我们能在各种手机app或计算机网页上看见各式各样的词云图,词云图可以帮助我们从
21、庞大且杂乱的信息中提取出现概率最高的词,让使用者更加清楚且直观的看到有效信息。词云库把词云当作一个对象,WordCloudO是一个文本中与其相对的词云。本设计依据词语出现频率高低的来绘制图片,同时设定词云图的大小、样式、颜色等。wordcloud=WordCloud(simhei.ttf,)fontpath=Simhei.Itf#字体aimask=np.array(Image.open(vordpic.png)#导入图像数据wc=WordCloud(font_path=fontpath,#设置字体路径background-color=,whitezz,#背景颜色max_words=1000,#
22、词云显示的最大词数max_font_size=100,#字体最大值min_font_size=10,#字体最小值random_state=42,#随机数Collocations=False,#避免重复单词max_words=200#要显示的词的最大个数mask=aimask,#造型遮盖Width=I200,height=800,margin=2,#图像宽高,字间距,需要配合下面的pit.figure(dpi=xx)放缩才有效)word_frequence=x0:xllforxinWOrdS_count.head(50).ValUes#WordS_count前50行数据,即词频前50的词汇wor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Python 网络 爬虫 设计 实现
链接地址:https://www.desk33.com/p-890858.html