欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  Python上有一个非常著名的HTTP库——requests,相比大家都听说过,用过的人都说好!现在requests库的作者又发布了一个新库,叫做requests-html,看名字也能猜出来,这是一个解析HTML的库,而且用起来和requests一样爽,下面就来介绍一下它。
 
  安装
 
  安装requests-html非常简单,一行命令即可做到。需要注意一点就是,requests-html只支持Python 3.6及更新的版本,所以使用老版本的Python的同学需要更新一下Python版本了。看了下源代码,因为requests-html广泛使用了一个Python 3.6中的新特性——类型注解。
 
  基本使用
 
  获取网页
 
  requests-html和其他解析HTML库最大的不同点在于HTML解析库一般都是专用的,所以我们需要用另一个HTTP库先把网页下载下来,然后传给那些HTML解析库。而requests-html自带了这个功能,所以在爬取网页等方面非常方便。
 
  下面的代码获取了糗事百科上面的文字段子页面,返回的对象r是requests.Reponse类型,更确切的说是继承自前者的requests_html.HTMLResponse类型。这里其实和requests库的使用方法差不多,获取到的响应对象其实其实也没啥用,这里的关键就在于r.html这个属性,它会返回requests_html.HTML这个类型,它是整个requests_html库中最核心的一个类,负责对HTML进行解析。我们学习requests_html这个库,其实也就是学习这个HTML类的使用方法。
 
  获取链接
 
  links和absolute_links两个属性分别返回HTML对象所包含的所有链接和绝对链接(均不包含锚点)。
 
  结果为下(因为结果太长,所以我随便取了一点,看个意思就行):
 
  获取元素
 
  request-html支持CSS选择器和XPATH两种语法来选取HTML元素。首先先来看看CSS选择器语法,它需要使用HTML的find函数,该函数有5个参数,作用如下:?
 
  - selector,要用的CSS选择器;?
 
  - clean,布尔值,如果为真会忽略HTML中style和script标签造成的影响(原文是sanitize,大概这么理解);?
 
  - containing,如果设置该属性,会返回包含该属性文本的标签;?
 
  - first,布尔值,如果为真会返回第一个元素,否则会返回满足条件的元素列表;?
 
  - _encoding,编码格式。
 
  下面是几个简单例子:
 
  结果如下,因为段子太多,所以随便选了两个:
 
  然后是XPATH语法,这需要另一个函数xpath的支持,它有4个参数如下:?
 
  - selector,要用的XPATH选择器;?
 
  - clean,布尔值,如果为真会忽略HTML中style和script标签造成的影响(原文是sanitize,大概这么理解);?
 
  - first,布尔值,如果为真会返回第一个元素,否则会返回满足条件的元素列表;?
 
  - _encoding,编码格式。
 
  还是上面的例子,不过这次使用XPATH语法:
 
  输出和上面那个几乎一样,之所以说是“几乎”,因为第三个输出会多出几个换行符,不知道什么原因。需要注意的一点是如果XPATH中包含text()或@href这样的子属性,那么结果相应的会变成简单的字符串类型,而不是HTML元素。
 
  元素内容
 
  糗事百科首页LOGO的HTML代码如下所示:
 
  我们来选取这个元素:
 
  要获取元素的文本内容,用text属性:
 
  要获取元素的attribute,用attr属性:
 
  要获取元素的HTML代码,用html属性:
 
  要搜索元素的文本内容,用search函数,比如说我们现在想知道是糗事什么科:

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h60179.shtml