如何使用beautifulsoup提取h1标签文本

jjy*_*yoh 2 python beautifulsoup

我想了解如何使用漂亮的汤提取包含许多其他标签的h1标签文本:

<h1 class="listing-name">
Hôtel Vevey 
<span class="entry-feedbacks-summary-title-rating-stars-container bootstrap">
<span class="entry-feedbacks-summary-title-rating-stars entry-feedbacks-summary-title-rating-stars-empty" data-container=".entry-feedbacks-summary-title-rating-stars-container" data-content="Il n'y a pas encore d'avis de clients à propos de Astra Hôtel Vevey 4*sup. Cliquez pour évaluer." data-placement="right" data-toggle="popover" data-trigger="hover" data-original-title="" title="">
<a class="feedback-login-link entry-feedbacks-header-link" href="/auth/localch?origin=https%3A%2F%2Ftel.local.ch%2Ffr%2Fd%2FVevey%2F1800%2FHotel%2FAstra-Hotel-Vevey-4sup-SVGb8b5z-QdrzGTddmyAAg%3Fwhat%3DHotel%26where%3DVaud%2B%2528Canton%2529%23entry-feedbacks-bottom-rate-button"><span class="entry-feedback-rating-star">
<i class="icon-star-outline entry-feedback-rating-star-empty"></i>
</span>
<span class="entry-feedback-rating-star">
<i class="icon-star-outline entry-feedback-rating-star-empty"></i>
</span>
<span class="entry-feedback-rating-star">
<i class="icon-star-outline entry-feedback-rating-star-empty"></i>
</span>
<span class="entry-feedback-rating-star">
<i class="icon-star-outline entry-feedback-rating-star-empty"></i>
</span>
<span class="entry-feedback-rating-star">
<i class="icon-star-outline entry-feedback-rating-star-empty"></i>
</span>

</a></span>

</span>
</h1>
Run Code Online (Sandbox Code Playgroud)

我正试图在h1标签"hôtelVevey"之后提取文本.

import requests
from bs4 import BeautifulSoup

url = "https://tel.local.ch/fr/d/Vevey/1800/Hotel/Astra-Hotel-Vevey-4sup-SVGb8b5z-QdrzGTddmyAAg?what=Hotel&where=Vaud+%28Canton%29"
get_url = requests.get(url)
get_text = get_url.text
soup = BeautifulSoup(get_text, "html.parser")

company = soup.find_next('h1', 'class:listing-name')


print(company)
Run Code Online (Sandbox Code Playgroud)

它让我"无"

MYG*_*YGz 7

对于您提供的当前链接,您可以这样获得:

company = soup.select('h1.listing-name')[0].text.strip()
print(company)
Run Code Online (Sandbox Code Playgroud)

输出:

Astra Hôtel Vevey 4*sup
Run Code Online (Sandbox Code Playgroud)


nar*_*rko 5

尝试使用字典:

company = soup.find('h1', {'class' : 'listing-name'})
Run Code Online (Sandbox Code Playgroud)

或以下内容:

company = soup.find('h1', class_ ='listing-name')
Run Code Online (Sandbox Code Playgroud)

注意课后的下划线。这是因为 class 是 python 中的保留字。

更多信息可以在这里找到:https : //www.crummy.com/software/BeautifulSoup/bs4/doc/#attrs

  • soup.select():1000 个循环,3 个最佳:每个循环 815 µs soup.find():1000 个循环,3 个最佳:每个循环 1.61 ms;select() 速度快 2 倍。 (3认同)