版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用爬虫技术进行数据采集学习单元1单元概述本单元主要介绍了爬虫的相关概念及爬取网页的基本过程。通过对静态页面爬取,使学习者了解爬虫的爬取的基本原理;通过对scrapy框架技术和Nutch技术讲解,让学习者能够编写简单的网络爬虫项目利用爬虫技术进行数据采集。教学目标掌握爬虫的概念、作用和流程。掌握静态网页爬取的基本流程。
了解crapy框架技术和Nutch技术的相关知识和基本理论。掌握常用的抓取网页所需工具的下载、安装与使用。熟练利用各种爬取工具进行网页有用信息的爬取。任务1爬取静态页面数据
“社会舆情信息管理系统”需要搜集最新的职业教育信息来发布,尤其知名职教院校信息动态。例如,在一高职网站爬取信息。一般的高职网站都由静态和动态两类网页构成,为了增加学习的针对性,使用requests+BeautifulSoup爬取静态页面数据,获取网页各部分数据内容。任务实现的关键点是:requests库的安装与使用,BeautifulSoup库的安装与使用,以及利用requests+BeautifulSoup爬取静态页面数据的基本过程。任务分析1.安装requests库在CMD命令窗口下,只需要输入命令pipinstallrequests,即可完成requests库的安装。任务实施2.使用requests库获取响应内容网络爬虫是通过requests向浏览器发送请求,获取请求内容importrequests#发送请求,获取服务器响应内容r=requests.get("/")r.encoding='utf-8'print("文本编码:",r.encoding)print("响应状态码:",r.status_code)print("字符串方式的响应体:",r.text)3.定制requests(1)传递URL参数
在URL中加入参数的形式是在问号后,以键/值的形式放在URL中:任务实施importrequestsr=requests.get('/list.aspx?news_type=1')print("URL已经正确编码:",r.url)print("字符串方式的响应体:\n",r.text)也可以把参数保存在字典中,用params构建到URL中importrequestskey_dict={'news_type':'1'}r=requests.get('/list.aspx',params=key_dict)r.encoding='utf-8'print("URL已经正确编码:",r.url)print("字符串方式的响应体:\n",r.text)(2)定制请求头利用Google浏览器构建请求头。因为打开Google浏览器,点击鼠标右键,点击检查,就可以找到请求所需要的参数:任务实施通过上图,我们可以获取如下信息:参数Host的值为'/'参数User-Agent的值为'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.100Safari/537.36',利用上面两个参数定制请求头,如下所示:任务实施importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.100Safari/537.36','Host':''}r=requests.get("/",headers=headers)print("响应状态码:",r.status_code)(3)发送POST请求除了get请求外,还需要发送一些编码格式为表单形式的数据,有些网站需要登录才能访问,这样就需要使用POST请求,也需要传递一个字典给Requests中的data参数。这个数据字典就会发出请求的时候自动编码为表单形式,如下所示:任务实施importrequestskey_dict={'key1':'value1','key2':'value2'}r=requests.post('/post',data=key_dict)print("URL已经正确编码:",r.url)print(r.text)4.安装BeautifulSoup库BeautifulSoup3目前已经停止开发,推荐在现在的项目中使用BeautifulSoup4。在windows系统下,只需要输入命令pipinstallbeautifulsoup4,即可完成beautifulsoup4库的安装。5.使用requests+BeautifulSoup爬取静态页面数据以爬取河北工业职业技术学院工院新闻页的新闻列表为例,基本实现步骤如下所示::(1)打开目标网页,确定要爬取的数据在网页源代码中的位置任务实施新建一记事本文件用于临时存放我们拷贝的位置路径。打开新建的记事本文件,右击选择“粘贴”便将我们浏览的网页中得第一条新闻标题在html代码中的位置信息粘贴过来,本例中粘贴的文本内容为“body>div.jz>div>div.ny_right>div>div.navjz.ny_newslb>ul>li:nth-child(1)>a”,去掉“li”后面的“:nth-child(1)”代码后,路径“body>div.jz>div>div.ny_right>div>div.navjz.ny_newslb>ul>li>a”则变为a标签在html代码中的位置,暂存路径。任务实施(2)编写爬虫文件任务实施importrequestsfrombs4importBeautifulSoupurl='/zhxw/gyxw.htm'strhtml=requests.get(url)strhtml.encoding=strhtml.apparent_encodingsoup=BeautifulSoup(strhtml.text,'lxml')data=soup.select('body>div.jz>div>div.ny_right>div>div.navjz.ny_newslb>ul>li>a')foritemindata:result={'title':item.get_text(),'link':item.get('href'),}print(result)1.爬虫的概念爬虫更官方点的名字叫数据采集,英文一般称作spider,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。简单来说,网络爬虫就是根据一定算法实现编程开发,主要通过URL实现数据的抓取和发掘。网络爬虫可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则我们称之为网络爬虫算法。使用Python可以很方便地编写出爬虫程序,进行互联网信息的自动化检索。必备知识2.爬虫的功能现如今大数据时代已经到来,网络爬虫技术成为这个时代不可或缺的一部分,爬虫的常用功能如图所示:必备知识3.爬虫的类型网络爬虫根据系统结构和开发技术,大致可以分为4种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫和深层网络爬虫。实际的网络爬虫系统通常是几种爬虫技术相结合实现的。必备知识(1)通用网络爬虫通用网络爬虫又称全网爬虫,它将爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。(2)聚焦网络爬虫聚焦网络爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。3.爬虫的类型必备知识(3)增量式网络爬虫增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。(4)深层网络爬虫深层网络爬虫是大部分内容不能通过静态URL获取的、隐藏在搜索表单后的、只有用户提交一些关键词才能获得的网络页面。4.爬虫的组成在爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。(1)控制器控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,分配一线程,然后启动线程调用爬虫爬取网页的过程。(2)解析器解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。(3)资源库主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、SqlServer等。必备知识5.Requests库获取响应的内容的过程,等同于我们使用浏览器的过程,我们在浏览器中输入网址,浏览器就会向服务器请求内容,服务器返回的就是HTML代码,浏览器就会自动解析代码。而我们的网络爬虫与浏览器发送请求的过程是一样的,通过requests向浏览器发送请求获取请求内容;同时我们通过使用requets发送请求获取数据。Requets可以发送get、post请求,还可以发送put、delete、options、head等请求。必备知识6.BeautifulSoup库简单来说,BeautifulSoup是python的一个库,最主要的功能是从网页抓取数据。BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据。必备知识任务2使用scrapy框架爬取动态数据
在上一个任务的基础之上,为了“社会舆情信息管理系统”获取更多的动态网页的信息。我们继续爬取高职网站动态网页的最新信息,并将信息进行存储。我们继续使用scrapy爬虫框架技术爬取河北工业职业技术学院的工院新闻页,将爬取到的网页源代码信息保存到hbcit_news.html中,然后提取网页中新闻列表的标题和发布日期等相关数据,并将爬取到的数据存储到hbcit_news.csv中。任务实现的关键点是:Scrapy框架的环境安装与部署,以及使用scrapy框架爬取动态数据的基本过程。任务分析1.安装Scrapy
打开cmd命令窗口,运行pip命令
pipinstallScrapy任务实施2.新建Scrapy项目
首先确定项目目录,然后打开cmd命令窗口,将命令行路径切换到自定义的项目目录,运行如下命令创建项目mySpider:scrapystartprojectmySpider
运行成功,在PyCharm环境中可以看到,mySpider项目的自动生成的文件和目录的结构如图所示3.定义要抓取的数据
在items.py文件中定义自己要抓取的数据。在PyCharm中打开mySpider目录下的items.py文件,文件中已经自动生成里继承自scrapy.Item的MyspiderItem类,我们只需要修改MyspiderItem类的定义,为它添加属性即可,添加后代码如下:任务实施importscrapyclassMyspiderItem(scrapy.Item):title=scrapy.Field()#抓取内容,新闻标题date=scrapy.Field()#抓取内容,新闻发布时间4.创建爬虫,爬取网页的源代码
首先打开cmd命令窗口,将命令行路径切换到E:\scrapyPro\mySpider\mySpider\spiders,然后使用创建爬虫的命令来创建一个名为hbcit的爬虫,运行代码如下:任务实施scrapygenspiderhbcit""上例中,爬虫名称是hbcit,爬取域的范围为。
运行成功后,在PyCharm的mySpider/spiders目录下会产生一个新创建的爬虫文件hbcit.py。爬虫程序编写完毕,在cmd命令窗口中将命令行路径切换到E:\scrapyPro\mySpider\mySpider\spiders,然后使用运行爬虫的命令来运行hbcit爬虫,运行代码如下:scrapycrawlhbcit4.创建爬虫,爬取网页的源代码
在当前文件夹会产生一个名称为hbcit_news.html的静态网页文件,文件内容就是使用爬虫爬取的工院新闻页的全部源代码信息,输出结果部分截图如下图所示:任务实施5.分析源代码,提取数据
确定要提取的目标数据,打开hbcit_news.html页面查看目标数据所处的网页结构,部分网页代码如下:任务实施<divclass="navjzny_newslb"><ul><li><span>2020-06-23</span><ahref="../info/1004/5802.htm"target="_blank"title="圆梦工院扬帆远航——我院首届来华留学生毕业典礼隆重举行">圆梦工院扬帆远航——我院首届来华留学生毕业典礼隆重举行</a></li><li><span>2020-06-19</span><ahref="../info/1004/5774.htm"target="_blank"title="中国共产党河北工业职业技术学院第三次代表大会胜利闭幕">中国共产党河北工业职业技术学院第三次代表大会胜利闭幕</a></li>......</ul></div>5.分析源代码,提取数据
打开hbcit.py文件,引入mySpider/items.py文件中定义的MyspiderItem类,修改parse()方法,修改代码如下:任务实施importscrapyfrommySpider.itemsimportMyspiderItemclassHbcitSpider(scrapy.Spider):name='hbcit'allowed_domains=['']start_urls=['/zhxw/gyxw.htm']defparse(self,response):items=[]foreachinresponse.xpath("//div[@class='navjzny_newslb']/ul/li"):item=MyspiderItem()date=each.xpath("span/text()").extract()title=each.xpath("a/text()").extract()item["date"]=date[0]item["title"]=title[0]items.append(item)returnitems5.分析源代码,提取数据
爬虫程序修改完毕,打开cmd命令窗口,将命令行路径切换到E:\scrapyPro\mySpider\mySpider\spiders,再次使用运行爬虫的命令来运行hbcit爬虫,运行代码如下:任务实施scrapycrawlhbcit
命令执行成功后,cmd窗口打印输出我们所获取的新闻列表信息,部分输出结果如下:2020-07-0614:13:03[scrapy.core.scraper]DEBUG:Scrapedfrom<200/zhxw/gyxw.htm>{'date':'2020-06-05','title':'学院领导走进“云端”课堂,指导课程线上教学'}2020-07-0614:13:03[scrapy.core.scraper]DEBUG:Scrapedfrom<200/zhxw/gyxw.htm>{'date':'2020-06-03','title':'我院开展疫情防控模拟演练'}2020-07-0614:13:03[scrapy.core.scraper]DEBUG:Scrapedfrom<200/zhxw/gyxw.htm>{'date':'2020-05-29','title':'我院“对话最美逆行者”专场报告会成功举办'}6.存储爬取数据
使用Scrapy框架制作爬虫最后一步就是将获取的数据进行输出存储,我们只需在运行爬虫命令时添加-o选项然后指定输出文件格式即可,我们以输出CSV文件格式为例,运行命令为:任务实施scrapycrawlhbcit-ohbcit_news.csv
程序运行完毕,在当前目录下自动创建了hbcit_news.csv文件,我们用Excel或WPS打开,hbcit_news.csv文件部分内容截图如下图所示:必备知识1.爬虫的原理(1)通用网络爬虫的实现原理及基本过程通用爬虫是一个自动提取网页的程序,它为搜索引擎从Internet上下载网页,是搜索引擎的重要组成部分。爬取网页的基本流程如下图所示必备知识1.爬虫的原理(2)聚焦网络爬虫的实现原理及基本过程聚焦网络爬虫的指定原理和过程与通用爬虫大致相同,在通用爬虫的基础上增加两个步骤:定义爬取目标和筛选过滤URL,原理如下图所示。必备知识2.使用Scrapy框架的一般步骤(1)新建项目,基本命令格式:scrapystartproject项目名称(2)明确目标,明确想要抓取的目标,编写items.py;(3)创建爬虫,基本命令格式:scrapygenspider爬虫名称"爬虫域"(4)运行爬虫,基本命令格式:scrapycrawl爬虫名称(5)保存数据,基本命令格式:scrapycrawl爬虫名称-o保存数据的文件名任务3使用Nutch爬取数据
在“社会舆情信息管理系统”中需要一些物联网信息技术发展的最新信息,尤其智慧城市发展的信息动态。为完成此任务,我们使用Nutch来爬取相关网站,获取相关最新动态数据信息。Nutch的插件机制使得开发者可以灵活地定制网页抓取策略,在本任务中,主要介绍了利用Nutch技术进行网页数据爬取的基本过程。我们首先对Nutch爬取数据的环境安装与设置,然后利用Nutch进行数据爬取,最后利用Solr对爬取结果进行查询操作。任务实现的关键点是Nutch与Solr的安装与集成。任务分析1.安装JDK和Tomcat网上下载jdk1.8和Tomcat8.5,首先安装jdk1.8,然后安装Tomcat,全部采用默认安装。jdk1.8安装完成以后,环境变量配置如下图所示:任务实施任务实施2.Cygwin安装:打开官网网页,下载“setup-x86_64.exe”的文件进行安装。
cygwin官网下载页面任务实施2.Cygwin安装步骤1:说明界面,单击“下一步”步骤2:安装方式选择默认的“InstallfromInternet”步骤3:选择安装目录任务实施2.Cygwin安装步骤4:选择保存路径步骤5:选择连接Internet的方式本案例选择“DirectConnection”步骤6:添加并选择下载cygwin的站点任务实施2.Cygwin安装步骤7:下载完成后点击下一步步骤8:选择需要下载安装的组件包步骤9:开始安装任务实施2.Cygwin安装步骤10:安装成功步骤11:安装验证任务实施3.Nutch安装官网下载Nutch。任务实施3.Nutch安装第一步:解压“apache-nutch-1.9-bin.zip”并将解压的文件夹“apache-nutch-1.9”完整地拷贝到Cygwin的安装目录的“home”文件夹下面。第二步:配置Nutch爬取的网站列表。第三步:配置“apache-nutch-1.9\conf\regex-urlfilter.txt”。第四步:配置“apache-nutch-1.9\conf\nutch-site.xml”。任务实施4.Solr安装及与Tomcat、Nutch集成登录官网下Solr。本案例下载的版本是4.10.1的文件“solr-4.10.0.zip”。任务实施4.Solr安装及与Tomcat、Nutch集成(1)solr安装及与Tomcat的集成第一步:将下载下来的“solr-4.10.0.zip”解压,解压后的目录为“solr-4.10.0”。第二步:将solr-4.10.0/example/文件夹下的solr文件夹拷贝到硬盘中的某个位置,用于solr操作的支持。如本例目录为“D:\solrHome”。第三步:将solr-4.10.0/example/webapps/目录下的solr.war复制到tomcat8.5/webapps目录下。第四步:将solr-4.10.0/example/lib/ext目录下的所有的jar包全部拷贝到“tomcat8.5/webapp/solr/WEB-INF/lib”下面。任务实施4.Solr安装及与Tomcat、Nutch集成(2)solr与Nutch的集成将“apache-nutch-1.9/conf/schema-solr4.xml”文件直接拷贝到“d:/solrHome/solr/collection1/conf”下将该目录已有的“schem
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度生态园区场地租赁合同标准范本6篇
- 二零二五年新能源发电设施建设泥工劳务合同3篇
- 二零二五版海上货物运输合同适用范围与船舶代理服务合同3篇
- 二零二五年度环境安全检测技术服务合同2篇
- 二零二五年度防火门销售、推广及市场拓展合同3篇
- 二零二五版智慧城市基础设施建设项目施工合同6篇
- 二零二五版新材料研发中心与实验员劳务合同2篇
- 二零二五年度游戏运营合同3篇
- 二零二五版医疗器械贴牌研发及销售合同3篇
- 二零二五版304不锈钢建筑结构材料采购合同2篇
- 品质经理工作总结
- 供电抢修述职报告
- 集成电路设计工艺节点演进趋势
- 新型电力系统简介演示
- 特种设备行业团队建设工作方案
- 眼内炎患者护理查房课件
- 肯德基经营策略分析报告总结
- 买卖合同签订和履行风险控制
- 中央空调现场施工技术总结(附图)
- 水质-浊度的测定原始记录
- 数字美的智慧工业白皮书-2023.09
评论
0/150
提交评论