python - 只获取一些标签
使用网站上的 BeautifulSoup
问题描述
我尝试仅从 selectet 标签中获取文本,例如:
<div class="article-container">
<p>tekst 1</p> <!-- this tag -->
<p>none</p>
<p>tekst 2</p> <!-- this tag -->
<p>none</p>
<p>tekst 3</p> <!-- this tag -->
<p>none</p>
<p>tekst 4</p> <!-- this tag -->
</div>
我尝试获取'tekst 1 tekst 2 tekst 3 tekst 4'(但标签中的文本完全不同'tekst 1'等只是示例),
我的简单 python 函数如下所示:
def get_article(url):
page = requests.get(str(url))
soup = BeautifulSoup(page.text, 'html.parser')
article = soup.find(class_='article-container')
article_only = article.text
return(article_only)
但他返回了整个文本。有没有办法像上面的例子一样使用 BS 来获取选定的元素?
解决方案
所以你只需要 1,3,5,7 元素,你可以这样做:
代码:
from bs4 import BeautifulSoup as soup
html = """<div class="article-intro">
<p>tekst 1</p>
<p>none</p>
<p>tekst 2</p>
<p>none</p>
<p>tekst 3</p>
<p>none</p>
<p>tekst 4</p>
</div>"""
page = soup(html, 'html.parser')
div = page.find('div',{'class':'article-intro'})
ps = div.find_all('p')
for i in range(len(ps)):
if i % 2 == 0:
print(ps[i].text)
输出:
tekst 1
tekst 2
tekst 3
tekst 4
推荐阅读
- azure - 使用 ARM 模板和 GitHub 操作将 .NET Core 应用程序部署到 Azure Web 应用程序
- r - R将数据转换为向量
- hex - 在 Informatica 中读取“application/octet-stream; charset=binary”文件
- java - 无法发送阿拉伯语短信 twilio
- java - Android Dagger 组件
- google-apps-script - 应用已经在另一个工作表中应用过的数组公式
- python-3.x - 关于排列和/或组合的问题
- javascript - TypeError:无法读取未定义的属性“标签”
- apache-spark - Spark,Delta Lake 嵌套列的自动模式演变
- python - TypeError: 数组 dtype ('|S32') 和格式说明符 ('%.7f %.7f %.7f %s') 不匹配