bs4 string 和 text区别

本文详细介绍了在HTML解析过程中.find和.string的区别。当处理TD标签时,.string返回单一文本,而.text会合并所有子节点的文本。对于有多个文本节点的情况,.string返回空,.text则进行拼接。了解这些差异对网页内容的正确解析至关重要。

下面展示一些 内联代码片

1、<td>some text</td> 
2、<td></td>
3、<td><p>more text</p></td>
4、<td>even <p>more text</p></td>

.string

1、some text
2、None
3、more text
4、None

.text

1、some text
2、
3、more text
4、even more text 

通过以上的举例,可以很清楚的发现,.find和.string之间的差异:

第一行:在指定标签td,没有子标签,且有文本时,两者的返回结果一致,都是文本
第二行:在指定标签td,没有子标签,且没有文本时,.string返回None,.text返回为空

第三行:在指定标签td,只有一个子标签时,且文本只出现在子标签之间时,两者返回结果一致,都返回子标签内的文本

第四行:最关键的区别,在指定标签td,有子标签,并且父标签td和子标签p各自包含一段文本时,两者的返回结果,存在很大的差异

.string:返回为空,因为文本数>=2,string不知道获取哪一个

.text:返回的是,两段文本的拼接。

转载:https://blog.youkuaiyun.com/zqxnum1/article/details/84587357

### 如何使用 Python 的 `requests` `BeautifulSoup4` 库 #### 发起 HTTP 请求并获取网页内容 为了发起HTTP请求,通常会使用`requests`库来简化这个过程。通过该库可以轻松发送GET/POST请求,并处理响应的内容。 ```python import requests url = 'http://example.com' response = requests.get(url) if response.status_code == 200: html_content = response.text # 获取网页源代码作为字符串形式 else: print('Failed to retrieve the webpage') ``` 这段代码展示了如何向目标URL发出GET请求,并检查服务器返回的状态码是否成功(即等于200)。如果一切正常,则可以从响应对象中提取HTML文本[^4]。 #### HTML 文档解析 一旦获得了网页的HTML内容之后,就可以借助于`BeautifulSoup`来进行结构化解析: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(html_content, 'html.parser') # 查找<title>标签内的文字内容 title_tag = soup.title print(f'Title tag: {title_tag}') # 提取出实际的文字部分而非整个标签 title_string = title_tag.string if title_tag else None print(f'Title text: {title_string}') ``` 在此示例里,创建了一个新的`BeautifulSoup`实例用于解析传入的HTML字符串。随后可以通过访问`.title`属性快速定位到文档中的<title>元素,并进一步调用其`.string`方法获得纯文本版本的数据[^2]。 此外还可以利用更多高级功能如查找特定条件下的多个节点、遍历DOM树形结构等操作,这使得从复杂网站上抽取所需信息变得更加容易实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值