Python__模块(网络-HTML解析)__bs4

简介

网页解析器 HTML/XML

BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码


文档地址

中文  https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

英文  https://www.crummy.com/software/BeautifulSoup/bs4/doc/


安装

pip install bs4


参数列表

tag
find(name, attrs, recursive, string, **kwargs)根据标签名、属性、内容等查找符合条件的第一个子孙节点,并返回一个Tag对象
find_all(name, attrs, recursive, string, limit, **kwargs)根据标签名、属性、内容等查找所有符合条件的子孙节点,并以列表形式返回多个Tag对象
select(css_selector)根据CSS选择器选择匹配的标签,并以列表形式返回多个Tag对象
get_text()获取当前标签下所有文本信息
string获取当前标签内部的字符串信息
text标签内部文本
attrs以字典形式返回当前标签的所有属性和属性值
name获取当前标签的名称
parent获取某个元素的父节点.
next_sibling获取当前标签的下一个兄弟标签
previous_sibling获取当前标签的前一个兄弟标签
has_attr(key)判断当前标签是否存在指定的属性
replace_with(new_tag)将当前标签替换为新标签

参考代码

from bs4 import BeautifulSoup
htmlText = """\
    '<html>\n\
        <head>\n\
        \t<title>这是一个标题</title>\n\
        </head>\n\
        <body>\n\
            \t<p class=\'txt\'><b>文本内容1...</b></p>\n\
            \t<p class=\'txt\'><b>文本内容2...</b></p>\n\
            \t<p class=\'content\'>文本内容3\n\
            \t\t<a href=\'https://www.python.com\' class=\'adr\' id=\'ad1\'>function<u>123</u></a>\n\
            \t\t<a href=\'https://www.python.com\' class=\'adr\' id=\'ad2\'>array</a>\n\
            \t\t<a href=\'https://www.python.com\' class=\'adr\' id=\'ad3\'>list</a>\n\
            \t</p>\n\
            \t<p class=\'content\'>...waiting update</p>\n\
        </body>\n\
    </html>'\n\
"""

soup = BeautifulSoup(htmlText, "html.parser")  # html.parser HTML解析器
# soup = BeautifulSoup(open("./index.html"))   # 通过文件方式获取HTML

print(soup.get_text())                         # 获取该html下包含text内容

""" 方法1-默认获取 """
print(soup.find_all(name="p", class_="txt"))   # 多种类型获取
print(soup.find_all("a"))                      # 标签类型获取
print(soup.find(id="ad1"))                     # 指定属性获取 
print(soup.find(id="ad1").text)

""" 方法2-Css选择获取 """
print(soup.select("p"))                        # 所有p标签包括内容
print(soup.select("p")[0].text)                # 第1个p标签内容
print(soup.select(".title"))                   # 通过class获取包括内容
link = soup.select("a")
print(link[0]["href"])                         # 通过属性获取内容 
print(soup.select(".adr>u"))

""" 方法3-标签获取 """
print(soup.title)                              # 获取title标签整个内容
print(soup.title.name)                         # 获取标签名 
print(soup.title.string)                       # 获取标签内容
print(soup.p)                                  # 获取所有p标签

拓展

HTML节点的增删改操作,更多方法参考文档。

首先,为了访问QQ空间相册,我们需要登录QQ账号。可以使用Selenium模拟用户登录QQ,然后使用BeautifulSoup解析相册页面,获取相册中的图片链接。 以下是大致的实现步骤: 1. 安装Selenium和BeautifulSoup模块。 2. 使用Selenium模拟用户登录QQ,进入相册页面。 ```python from selenium import webdriver # 创建Chrome浏览器对象 browser = webdriver.Chrome() # 打开QQ登录页面 browser.get("https://mail.qq.com/") # 执行模拟登录操作,具体实现可以参考Selenium文档或其他相关教程 # ... # 进入相册页面 browser.get("http://user.qzone.qq.com/123456789/album") ``` 3. 使用BeautifulSoup解析相册页面,获取相册中的图片链接。 ```python from bs4 import BeautifulSoup # 获取相册页面的HTML源代码 html = browser.page_source # 使用BeautifulSoup解析HTML源代码,获取相册中的图片链接 soup = BeautifulSoup(html, "html.parser") img_links = soup.find_all("img", class_="c_photo_img_img") # 打印图片链接 for link in img_links: print(link["src"]) ``` 4. 下载图片。 ```python import requests # 下载图片 for i, link in enumerate(img_links): img_url = link["src"] response = requests.get(img_url) with open(f"photo_{i}.jpg", "wb") as f: f.write(response.content) ``` 以上只是大致的实现步骤,具体的实现过程可能还需要根据实际情况进行调整。同时,需要注意的是,访问QQ空间相册需要登录QQ账号,因此需要注意账号安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vip飞梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值