开始前需安装Beautiful Soup 和lxml。

Beautiful Soup在解析时依赖解析器,下表列出bs4支持的解析器。

解析器 使用方法
Python标准库 BeautifulSoup(markup,”html.parser”)
lxml HTML解析器 BeautifulSoup(markup,”lxml”)
lxml XML解析器 BeautifulSoup(markup,”xml”)
html5lib BeautifulSoup(markup,”html5lib”)

 

 

from bs4 import BeautifulSoup

import requests

url = \'http://bangumi.tv/anime/browser?sort=rank&page=1\'

headers = {
  \'User-Agent\': \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36\'
}

response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.content.decode(\'utf-8\'),\'lxml\')

使用lxml初始化Beautiful Soup

 

print(soup.title)
#输出title节点
print(soup.title.string)
#输出title节点的文本内容
print(soup.p)
#当有多个p节点时,只选择到第一个p节点
print(soup.title.name)
#title节点的name属性
print(soup.p.attrs)
#选择p节点的所有属性以字典输出
print(soup.p.attrs[\'name\'])
#选择p节点的name属性
print(soup.p[\'name\'])
#上面的简单写法
print(soup.head.title.string)
#支持嵌套选择
print(soup.p.contents)
#选择p节点的直接子节点,包括节点与文本,以列表形式返回
print(soup.p.children)
#选择p节点的直接子节点,包括节点与文本,以生成器类型返回
print(soup.p.descendants)
#选择p节点的所有子孙节点,包括节点与文本,以生成器类型返回
print(soup.p.parent)
#选择p节点的直接父节点
print(soup.p.parents)
#选择p节点的所有父节点
print(soup.a.next_sibling)
print(soup.a.previous_sibling)
print(list(enumerate(soup.a.next_siblings)))
print(list(enumerate(soup.a.previous_siblings)))
#选择p节点的下一个兄弟元素、上一个兄弟元素、后面所有的兄弟元素、前面所有兄弟元素

find_all(name,attrs,recursive,text,**kwargs)

查询所有符合条件的元素

ul = soup.find_all(name=\'ul\'))
#获取所有ul节点
print(ul.find_all(name=\'li\'))
#获取ul节点的所有li节点
print(soup.find_all(attrs={\'id\':\'list-1\'}))
#利用属性值查询
print(soup.find_all(id=\'list-1\'))
#上一句的简写
print(soup.find_all(text=re.compile(\'link\')))
#text参数用来匹配节点的文本,可传入字符串或正则表达式
print(soup.find(id=\'list-1\'))
#find()方法只返回第一个匹配到的元素
print(soup.select(\'.panel .panel-heading\'))
print(soup.select(\'ul li\'))
#使用CSS选择器时,需调用select()方法,传入相应的CSS选择器

 

版权声明:本文为wdl1078390625原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wdl1078390625/p/9876944.html