BeautifulSoup

Beautiful Soup 是一个用于从HTML和XML文件中提取数据的Python库。它通过创建一个解析树来方便用户搜索和修改文档的内容。下面是Beautiful Soup的一些基本应用和解释:

lxml是解释器

使用的时候要实例化类beautifulsoup

然后在去使用你要提取的内容

遍历文档树

#BeautifulSoup遍历文档树
 
from bs4 import BeautifulSoup
import requests
import lxml
 
 
url = "https://d2.shopxo.vip/"
try:
    response = requests.get(url)
except:
    raise Exception("请求失败")
 
html_content = response.text
soup = BeautifulSoup(html_content, 'lxml')
 
# print(soup) #已经把整个html赋值给了soup,输出soup就是输出整个html文档
# print(soup.meta) #输出在soup中从上到下找到的第一个meta标签
# print(soup.children) #输出soup的子节点,是一个迭代器,可以用for循环遍历
# for child in soup.children:
#     print(child)
# print(soup.title) #输出在soup中从上到下找到的第一个title标签
# print(soup.title.string) #输出title标签的儿子文本内容
# print(soup.title.text) #输出title标签的所有后代文本内容
# print(soup.head.string) #输出所有后代节点的文本内容
# print(soup.head.text) #由于没有儿子有文本内容,所以输出为空。
# print(soup.title.next_sibling) #输出title标签的下一个兄弟节点,这里是一个换行符,所以啥都没有
# print(repr(soup.title.next_sibling)) #repr()函数可以输出换行符的转义字符
# print(soup.title.previous_sibling) #输出title标签的上一个兄弟节点,这里是一个换行符,所以啥都没有
# print(repr(soup.title.previous_sibling))#输出上一个兄弟节点
# print(soup.title.next_sibling.next_sibling)#输出下一个兄弟节点的下一个兄弟节点
# print(soup.title.parent)#输出老爹
# print(soup.title.parents)#输出所有的祖先节点,是一个迭代器
 
# 这个for循环是在parents中是先找老爹,再找爷爷,再找曾祖父,一直到根节点document
# for parent in soup.title.parents:
#     print(parent.name

搜索文档树

  1. select() 方法:

    • select() 是 Beautiful Soup 提供的一个方法,用于通过CSS选择器选择元素。
    • CSS选择器是一种用于选择HTML元素的模式,常用于前端开发中的样式表(CSS)。
#搜索文档树
import requests
from bs4 import BeautifulSoup
 
url = "https://d2.shopxo.vip/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# # find方法
# #找到第一个class为category-list的ul标签。class有下换线是因为class是python的关键字,不能冲突
# # ul = soup.find("ul", class_="category-list")
# # print(ul)
# ul = soup.find("ul", {'class': 'category-list'})
# # print(ul)
# for item in ul.children:
#     # print(repr(item)) #用repr()函数输出item的内容,用这个函数如果内容是换行符,输出\n
#     if item != "\n":
#         print(item.span.text)#item.span是找到item从上往下的后代中的第一个span标签
# # find_all方法,返回一个列表
# ul = soup.find("ul", class_="category-list")
# # lis = ul.find_all("li")
# # print(lis)
# spans = ul.find_all("span")
# for span in spans:
#     print(span.text)
# select方法
# div = soup.select("ul.category-list")
# print(div)
# lis = soup.select("ul li.first")
# # print(lis)
# for li in lis:
#     print(li.span.text)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值