爬虫技术PPT课件_第1页
爬虫技术PPT课件_第2页
爬虫技术PPT课件_第3页
爬虫技术PPT课件_第4页
爬虫技术PPT课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络爬虫技术,詹晓东,1,.,网络爬虫,采集信息用的程序一般被称为网络爬虫(Webcrawler)、网络铲(Webscraper,可类比考古用的洛阳铲)、网络蜘蛛(Webspider)网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。网络数据采集并不是一门语言的独门秘籍,Python、Java、PHP、C#、Go等语言都可以Python当歌!简洁轻松的语法,开箱即用的模块,2,.,网络爬虫,UrllibBeautifulSoupLxmlXPathScrapy,3,.,urllib,Python3.X版本urllib和urllib2合并为urllibPython2.7版本urllib和urllib2各司其职urllib2可以接受一个Request对象,并以此可以来设置一个URL的headers,但是urllib只接收一个URL。这意味着,你不能伪装你的用户代理字符串等。urllib模块可以提供进行urlencode的方法,该方法用于GET查询字符串的生成,urllib2的不具有这样的功能。这就是urllib与urllib2经常在一起使用的原因。,4,.,urllib2,urllib2模块定义的函数和类用来获取URL(主要是HTTP的),他提供一些复杂的接口用于处理:基本认证,重定向,Cookiesurllib2支持许多的“URLschemes”(比如http:/,ftp:/,file:/)常用方法和类:urllib2.urlopen(url,data,timeout)importurllib2response=urllib2.urlopen(/)html=response.read(),5,.,urllib2,urlopen方法也可通过建立了一个Request对象来明确指明想要获取的urlimporturllib2req=urllib2.Request(/)response=urllib2.urlopen(req)the_page=response.read()classurllib2.Request(url,data,headers,origin_req_host,unverifiable)URL是一个字符串,其中包含一个有效的URL。data是一个字符串,指定额外的数据发送到服务器headers是字典类型,头字典可以作为参数在request时直接传入,6,.,urllib2,importurllibimporturllib2url=,7,.,urllib2,异常处理importurllib2req=urllib2.Request(/)try:response=urllib2.urlopen(req)excepturllib2.URLError,e:printe.reasonprinte.reason0printe.reason1,HTTPErrorHTTPError是URLError的子类importurllib2req=urllib2.Request(/fish.html)try:response=urllib2.urlopen(req)Excepturllib2.HTTPError,e:printe.codeprinte.reasonprinte.geturl()printe.read(),8,.,Beautifulsoup4,安装BeautifulSoupsudoapt-getinstallpython-bs4sudopipinstallbeautifulsoup4测试$pythonfrombs4importBeautifulSoup如果没错,安装成功,9,.,Beautifulsoup4,运行BeautifulSoupimporturllibfrombs4importBeautifulSouphtml=urlib.urlopen(print(bsObj.h1),10,.,Beautifulsoup4,要解析的文档是什么类型:目前支持,html,xml,和html5指定使用哪种解析器:目前支持,lxml,html5lib,和html.parsersoup=BeautifulSoup(html,html.parser,from_encoding=utf-8),11,.,Beautifulsoup4,对象的种类BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:Tag,NavigableString,BeautifulSoup,Comment.Tag:通俗点讲就是HTML中的一个个标签,像上面的div,p。每个Tag有两个重要的属性name和attrs,name指标签的名字或者tag本身的name,attrs通常指一个标签的class。NavigableString:获取标签内部的文字,如,soup.p.string。BeautifulSoup:表示一个文档的全部内容。Comment:Comment对象是一个特殊类型的NavigableString对象,其输出的内容不包括注释符号.,12,.,Beautifulsoup4,html_doc=TheDormousesstoryTheDormousesstoryOnceuponatimetherewerethreelittlesisters;andtheirnameswereElsie,LacieandTillie;andtheylivedatthebottomofawell.,13,.,Beautifulsoup4,frombs4importBeautifulSoupsoup=BeautifulSoup(html_doc)print(soup.prettify()soup.title#TheD#utitlesoup.title.string#uTheD#uheadsoup.p#TheDormousesstorysoup.pclass#utitlesoup.a#Elsiesoup.find_all(a),14,.,Beautifulsoup4,forlinkinsoup.find_all(a):print(link.get(href),15,.,lxml,安装:sudopipinstalllxml使用fromlxmlimportetree-导入模块,该库常用的XML处理功能都在lxml.etree中,16,.,lxml,问题1:有一个XML文件,如何解析问题2:解析后,如果查找、定位某个标签问题3:定位后如何操作标签,比如访问属性、文本内容等,17,.,lxml,fromlxmlimportetreeimporturllib2importreurl=req=urllib2.Request(url)reponse=urllib2.urlopen(req)html=reponse.read()selector=etree.HTML(html)a_f=selector.xpath(/aclass=_r_c_/href)a_t=selector.xpath(/aclass=_r_c_/text()printa_fprinta_t,18,.,lxml,Element类Element是XML处理的核心类,Element对象可以直观的理解为XML的节点,大部分XML节点的处理都是围绕该类进行的。这部分包括三个内容:节点的操作、节点属性的操作、节点内文本的操作。,19,.,lxml,1.节点操作创建Element对象使用Element方法,参数即节点名称。movies=selector.xpath(/liclass=clearfix)printmovies,获取节点名称使用tag属性,获取节点的名称。foriinmovies:printi.tag输出XML内容使用tostring方法输出XML内容,参数为Element对象。printetree.tostring(movies0),20,.,Xpath,XPath是一门在XML文档中查找信息的语言。XPath可用来在XML文档中对元素和属性进行遍历。XPath是W3CXSLT标准的主要元素,并且XQuery和XPointer都构建于XPath表达之上。因此,对XPath的理解是很多高级XML应用的基础。,21,.,Xpath,HarryPotterJK.Rowling200529.99,(文档节点)JK.Rowling(元素节点)lang=en(属性节点),22,.,Xpath,基本值(或称原子值,Atomicvalue)基本值是无父或无子的节点。项目(Item)项目是基本值或者节点。节点关系父(Parent)子(Children)同胞(Sibling先辈(Ancestor)后代(Descendant),HarryPotterJK.Rowlin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论