我试图从下面的html源中提取"br“中的地址,但是我无法提取,也不知道作为属性应该提供什么。我正在使用下面的代码提取地址,但它并不像预期的那样工作。任何帮助都是非常感谢的。
编辑:我已经复制了下面代码中缺失的部分。
完整源代码:
[<div class="card dl">
<span id="section-1"></span>
<div class="card-header pb-1 px-1"><!-- Betriebsname -->
<h3 class="card-title mb-0">
<!-- <img src="https://www.tk-aerztefuehrer.de/TK/images/EntryType_person1.svg" alt=" " /> -->Praxis Dr. Christina Balduhn </h3>
<!-- ***** HINWEIS PRIVAT ***** -->
<!-- ************************** -->
</div>
<div class="card-body px-1"><!-- panel-body - einzelne Eintrag anfang -->
<div class="row">
<div class="col-sm-5">
<strong><a href="https://www.tk-aerztefuehrer.de/TK/Suche_SN/index.js?a=DD&sid=&e_id=830057&Db=" style="text-decoration:underline;" title="Details zum Eintrag ansehen">Frau Dr. med. Christina Balduhn</a></strong>
<br/><span style="color:#666;">Fachärztin für Allgemeinmedizin</span>
<!-- ********
<br /><br><span style="color:#7fb7c4; font-weight:700;">Praxis jetzt geöffnet</span>
<p class="mt-3">Telefon: <a href="tel:+4952531717" class="it">0 52 53 / 17 17</a></p>
********** -->
<br/>
<!-- Fachgebiet:<br>Allgemeinmedizin<br><br /> -->
<!-- ********* ArztImage Neu ******* -->
<!-- ************** ArztImage Neu e ************* -->
</div><!-- #sm-5 end -->
<div class="col-sm-4">
<!-- *********************************************** -->
<div class="d-none d-md-block">
<a class="btn btn-outline-secondary arrow-r" href="https://www.tk-aerztefuehrer.de/TK/Suche_SN/index.js?a=DD&sid=&e_id=830057&Db=" title="Zur Detailseite">Zur Detailseite</a>
<!-- OTB Termin finden desktop **** -->
<!-- *** -->
</div>
<!-- <img class="mapicons" src="https://www.tk-aerztefuehrer.de/TK/images/GoogleImages/A.png" alt=" " /><br> -->
<!-- *********
<br>
<img src="https://www.tk-aerztefuehrer.de/TK/img/entfernung.svg" alt=" " /> 0.2 km<br />
<br>
Tegelhof 1<br />
33014 Bad Driburg<br />
<br />
********* -->
<p class="show-xs show sm"></p>
</div><!-- #sm-4 end -->
<div class="col-sm-3">
<!-- ###################################################
<div>
<a class="btn btn-primary" title="Details zum Eintrag ansehen" href="">Details zum Eintrag</a>
</div>
<div style="margin:1em 0;">
<a class="btn btn-default" title="Bewertung geben" href="https://www.tk-aerztefuehrer.de/TK/Arzt-Auskunft/Suche_SN/index.js?a=FR&e_id=830057&db=">Bewertung geben</a>
</div>
<span class="empf-0" title="Noch keine Bewertung(en) vorhanden"> 0 Bewertung(en)</span>
############################
<div style="margin: 0 0 1em 0;">
<a style="width:70%;" class="btn btn-primary" title="Bewertung geben" href="https://www.tk-aerztefuehrer.de/TK/Suche_SN/index.js?a=FR&e_id=830057&db=">Bewertung geben <i class="fa fa-angle-right" style="padding-left:1.1em;"></i></a>
</div>
################################################ -->
<!-- Bewertungstatus (1-5 Punkte) -->
<img src="https://www.tk-aerztefuehrer.de/TK/img/rategrade-0.png" title="Keine Bewertungen vorhanden"/>
<br/>
<span class="empf-0" title="Noch keine Bewertung(en) vorhanden">0 Bewertung(en)</span>
<!-- *********************** OTB ******************
****************************************** -->
</div><!-- sm-3 end -->
</div><!-- end row -->
<div class="row"><!-- Eintrag End - Abstand zw. Einträge -->
<div class="col-sm-12">
<!-- ************ OTV ************* -->
<!-- ********
<!-- ************ OTV e ************* -->
</div><!-- sm-12 end -->
</div><!-- end row -->
<!-- 2020 A -->
<!-- ########### Row 2 ################# -->
<div class="row">
<div class="col-sm-5 py-2">
<br/><span style="color:#7fb7c4; font-weight:600;">Praxis jetzt geöffnet</span>
<p class="mt-5 d-none d-md-block">Telefon: <a class="it" href="tel:+4952531717">0 52 53 / 17 17</a></p>
</div><!-- sm-5 end -->
<div class="col-sm-4 pt-2">
<!-- <img class="mapicons" src="https://www.tk-aerztefuehrer.de/TK/images/GoogleImages/A.png" alt=" " /><br> -->
<br/>
<img alt=" " src="https://www.tk-aerztefuehrer.de/TK/img/entfernung.svg"/> 0.2 km<br/>
<span class="pt-3 d-none d-md-block"></span>
Tegelhof 1<br/>
33014 Bad Driburg<br/>
</div><!-- sm-4 end -->
<div class="col-sm-3">
</div><!-- sm-3 end -->
</div><!-- end row -->发布于 2021-02-24 18:57:33
你发的html已经坏了。在不完全注释中有html标记。<!-*之后的所有内容都无效。我认为在那条线被移除之前,这是行不通的。如果您在该html块上启动BeautifulSoup,它将不包括您要获取的文本。但如果你删除不完整的评论,它会的。如果您无法编辑此网页,则可以将该html视为字符串,并将<!-*,然后在BeautifulSoup中引用固定的html字符串。
可能有更好的方法来做到这一点,但这将获得您想要的信息,通过引用上一个最近的标签img,并使用它作为锚找到地址文本。
addressLine1 = str(soup.find('img', class_='').findNextSibling(text=True).findNextSibling(text=True).findNextSibling(text=True)).strip()
# Am Rathausplatz 4
addressLine2 = str(soup.find('img', class_='').findNextSibling(text=True).findNextSibling(text=True).findNextSibling(text=True).findNextSibling(text=True)).strip()
# 33014 Bad Driburg完整的例子:
from bs4 import BeautifulSoup
# remove <!-- *********
html = """<div class="d-none d-md-block">
<a class="btn btn-outline-secondary arrow-r" href="https://www.tk-aerztefuehrer.de/TK/Suche_SN/index.js?a=DD&sid=&e_id=799433&Db=" title="Zur Detailseite">Zur Detailseite</a>
<!-- OTB Termin finden desktop **** -->
<!-- *** -->
</div>
<!-- <img class="mapicons" src="https://www.tk-aerztefuehrer.de/TK/images/GoogleImages/E.png" alt=" " /><br> -->
<br>
<img src="https://www.tk-aerztefuehrer.de/TK/img/entfernung.svg" alt=" " /> 0.3 km<br />
<br>
Am Rathausplatz 4<br />
33014 Bad Driburg<br />
<br />"""
soup = BeautifulSoup(html, 'lxml') # if you use html.parser the code below will be different
# find <img> element first, then get text element next to it
addressLine1 = str(soup.find('img', class_='').findNextSibling(text=True).findNextSibling(text=True).findNextSibling(text=True)).strip()
# Am Rathausplatz 4
addressLine2 = str(soup.find('img', class_='').findNextSibling(text=True).findNextSibling(text=True).findNextSibling(text=True).findNextSibling(text=True)).strip()
# 33014 Bad Driburg
print(addressLine1)
print(addressLine2)https://stackoverflow.com/questions/66356814
复制相似问题