Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析

  

<强>前言

  

要想学好爬的虫,必须把基础打扎实,之前发布了两篇文章,分别是使用XPATH和请求爬取网页,今天的文章是学习Beautiful Soup并通过一个例子来实现如何使用Beautiful Soup爬取网页。

  

<强>什么是Beautiful Soup

  
      <李> Beautiful Soup是一款高效的Python网页解析分析工具,可以用于解析HTL和XML文件并从中提取数据。   <李> Beautiful Soup输入文件的默认编码是Unicode,输出文件的编码是utf - 8。   <李>美丽汤具有将输入文件自动补全的功能,如果输入的HTML文件的标题标签没有闭合,则在输出的文件中会自动补全& lt;/title>,并且还可以将格式混乱的输入文件按照标准的缩进格式输出。   
  

美丽的汤要和其他的解析器搭配使用,例如Python标准库中的HTML解析器和其他第三方的lxml解析器,由于lxml解析器速度快,容错能力强,因此一般美丽和汤搭配使用。

  

初始化漂亮的汤对象的代码:

        html=啊?   & lt; html> & lt; title>你好漂亮Soup & lt; p> Hello

& lt;/html>   “‘   汤=BeautifulSoup (html, lxml)      

只需把第二个参数写成“lxml”即可使用lxml解析器初始化漂亮的汤对象。

  

Beautiful Soup提供了三种选择器用去爬取节点中的数据,分别是节点选择器,方法选择器和CSS选择器。下面分别介绍着三个选择器的用法。

  

<强>节点选择器:
  

  

HTML网页有标题,p,头,tr, td等节点。通过美丽的汤对象+”。“+节点即可直接访问到节点。美丽的汤对象+”。“+节点+”。“+字符串即可提取到节点的文本信息。

  

           用法   描述               soup.title   选择第一个标题节点         soup.title.string   提取第一个标题节点的文本信息         soup.title.attrs   获取第一个标题节点的所有属性,返回的结果的词典。   如果有类属性,则类属性返回的是列表,类属性之间以空格当做分隔符         soup.p.contents   获取第一个p节点的所有直接子节点。   该方法返回的是第一个p节点中包含的所有直接子字节点和文本,   不包含孙节点,两个节点之间的文本也当做是一个节点返回。   返回的结果是列的表         soup.p.children   返回第一个p节点的所有直接子节点,返回的结果是list_iterator对象         soup.p.descendants   获取第一个p节点的所有子孙节点         soup.a.parent   获取第一个一节点的父节点         soup.a.parents   获取第一个一节点的所有祖先节点         soup.p.next_siblings   获取第一个p节点的下一个兄弟节点         soup.p.previous_siblings   获取第一个p节点的上一个兄弟节点            

  

<强>方法选择器:

  

根据传入的参数查找符合条件的节点。下面是方法选择器提供的方法:

  

           方法   描述               find_all(名称、attrs递归、文本、* * kwargs)   根据传入参数查找所有符合条件的节点,   名字是节点名,attrs属性值,文本文本内容等。   文本参数可以是字符串,也可以是正则表达式:   soup.find_all(文本=re.compile('测试'))         找到(名称、attrs递归、文本、* * kwargs)   返回第一个符合条件的节点         find_parents ()   返回所有祖先节点         find_parent ()   返回父节点         find_next_siblings ()   往后查找,所有兄弟节点         find_next_sibling ()   往后查找,返回第一个兄弟节点         find_previous_siblings ()   往前查找,返回所有兄弟节点         find_previous_sibling ()   往前查找,返回第一个兄弟节点            

  

在使用上面的方法时,如果参数中有Python的关键字,则需要在参数下面加一个下划线,例如下面的代码,类是Python的关键字,必须在课堂后加下划线class_=皌itle_class”:

        从bs4进口BeautifulSoup   html=?   & lt; html>   & lt; body>   & lt;标题id=皌itle_id”类=皌itle_class”名称=氨晏饷啤痹诓馐訠eautifulSoup

Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析