Frage

Ich möchte ein regulärer Ausdruck, den Titel von einer HTML-Seite zu extrahieren. Zur Zeit habe ich diese:

title = re.search('<title>.*</title>', html, re.IGNORECASE).group()
if title:
    title = title.replace('<title>', '').replace('</title>', '') 

Sie haben einen regulären Ausdruck nur den Inhalt von zu extrahieren, also muss ich nicht die Tags entfernen? </P> </div> </div> </div> <div id="boxRight" class="tab-content col-xl-6"> <div id="boxSoluzioneDescrizione" class="boxArticolo"> <div class="row"> <div class="col-md-6"> <div class="row justify-content-start"> <div class="col-md-12"> <form id="feedback" action="/de/articolo/feedback" method="post"> <input type="hidden" name="_csrf" value="XTUg79DTqjCIEb8HsJ6vMJXLVcybud4v7KXIy6JxFYYRRnKkp4n9XuVH7UvF6OZ13oITjvTMiEGz3Zqnzhlc1w=="> <div class="hidden" style="display:none;"> <div class="form-group field-feedbackform-pagina required"> <input type="hidden" id="feedbackform-pagina" class="pagina" name="FeedbackForm[pagina]" value="/articolo/details"> <p class="help-block help-block-error"></p> </div> <div class="form-group field-feedbackform-idargomento"> <input type="hidden" id="feedbackform-idargomento" class="idArgomento" name="FeedbackForm[idArgomento]" value="374591"> <p class="help-block help-block-error"></p> </div> </div> <div> War es hilfreich? <div class="example-block text-center"> <label class="radio-inline" for="happy" style="font-size:1.5em;cursor:pointer;color:green;"> <i class="far fa-thumbs-up" title="This answer is useful"></i> <!-- fas per effetto mano piena --> <!--<img class="votoImg" src="https://img.icons8.com/color/100/000000/bored.png" width="84" height="84" loading="lazy" fetchpriority="high"> --> </label> <input type="radio" id="happy" class="voto input-hidden" name="FeedbackForm[voto]" value="10"> </div> <div class="example-block text-center"> <label class="radio-inline" for="sad" style="font-size:1.5em;cursor:pointer;color:red;"> <i class="far fa-thumbs-down" title="This answer is not useful"></i> <!-- fas per effetto mano piena --> <!--<img class="votoImg" src="https://img.icons8.com/color/100/000000/boring.png" width="84" height="84" loading="lazy" fetchpriority="high">--> </label> <input type="radio" id="sad" class="voto input-hidden" name="FeedbackForm[voto]" value="0"> </div> <!--<div class="col-auto example-block text-center"> <label class="radio-inline"> <input type="radio" name="voto" id="exicetd" class="input-hidden" /> <img class="votoImg" src="https://img.icons8.com/color/100/000000/smiling.png " width="84" height="84" loading="lazy" fetchpriority="high"> </label> </div>--> </div> <div class="row footer justify-content-between"> <div class="col"> <button type="button" class="btn btn-primary" data-dismiss="modal">einreichen</button> </div> </div> </form> </div> </div> </div> <div class="col-md-6"> </div> </div> <div class="row "> <div class="col-md-12"> <p class="title" style="background-color:green;"> <i class="far fa-thumbs-up"></i> Lösung </p> <div class="testo"> <P> Verwenden <code>(</code> <code>)</code> in regexp und <a href="https://docs.python.org/2/library/re.html#re.MatchObject.group" rel="noreferrer"> <code>group(1)</code> </a> python das erfasste Zeichenfolge abzurufen (<a href="https://docs.python.org/2/library/re.html#re.search" rel="noreferrer"> <code>re.search</code> </a> <code>None</code> wenn sie zurückkehren das Ergebnis nicht finden, so <em> nicht direkt verwenden <code>group()</code> </em>): </p> <pre><code>title_search = re.search('<title>(.*)</title>', html, re.IGNORECASE) if title_search: title = title_search.group(1) </code></pre> </div> </div> </div> </div> </div> </div> <div class="row mt-4 adv"> <div class="col-12 text-center"> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-5108424997424987" data-ad-slot="1879801491"></ins> <script defer async crossorigin="anonymous"> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="row mt-4 adv"> <div class="col-12 text-center"> </div> </div> <div class="row mt-4"> <div class="col-12"> <div id="boxSoluzioniAvanzate" class="boxArticolo soluzioni"> <p class="title" style="background-color:black;"><i class="fas fa-file-alt"></i> Andere Tipps</p> <div class="testo"> <div id="alt1490811" class="boxBorderTop row noMargin pt-4"> <div class="col-md-12 text-left"> <i class="far fa-newspaper fa-2x mb-2" style="display:block;color:gray;"></i> </div> <div class="col-md-12"> <P> Versuchen Sie erfassen Gruppen mit: </p> <pre><code>title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1) </code></pre> </div> </div> <div id="alt1490812" class="boxBorderTop row noMargin pt-4"> <div class="col-md-12 text-left"> <i class="far fa-newspaper fa-2x mb-2" style="display:block;color:gray;"></i> </div> <div class="col-md-12"> <P> Beachten Sie, dass ausgehend <code>Python 3.8</code>, und die Einführung von <a href="https://www.python.org/dev/peps/pep-0572/" rel="noreferrer"> Zuweisungsausdrücke (PEP 572) </a> (<code>:=</code> Operator), dann ist es möglich, ein bisschen auf <a href="https://stackoverflow.com/a/1327389/9297144"> Krzysztof Krason Lösung </a> zu verbessern, indem das Spielergebnis direkt in der, wenn die Erfassung Zustand als Variable und wiederverwenden es im Körper der Bedingung: </p> <pre><code># pattern = '<title>(.*)</title>' # text = '<title>hello</title>' if match := re.search(pattern, text, re.IGNORECASE): title = match.group(1) # hello </code></pre> </div> </div> <div id="alt1490813" class="boxBorderTop row noMargin pt-4"> <div class="col-md-12 text-left"> <i class="far fa-newspaper fa-2x mb-2" style="display:block;color:gray;"></i> </div> <div class="col-md-12"> <P> <code>re.search('<title>(.*)</title>', s, re.IGNORECASE).group(1)</code> </p> </div> </div> <div id="alt1490814" class="boxBorderTop row noMargin pt-4"> <div class="col-md-12 text-left"> <i class="far fa-newspaper fa-2x mb-2" style="display:block;color:gray;"></i> </div> <div class="col-md-12"> <P> Die zur Verfügung gestellten Teile des Codes tun bewältigen nicht mit <code>Exceptions</code> Darf ich vorschlagen, </p> <pre><code>getattr(re.search(r"<title>(.*)</title>", s, re.IGNORECASE), 'groups', lambda:[u""])()[0] </code></pre> <P> Das gibt eine leere Zeichenfolge standardmäßig, wenn das Muster gefunden wird nicht, oder das erste Spiel. </P> </div> </div> <div id="alt1490815" class="boxBorderTop row noMargin pt-4"> <div class="col-md-12 text-left"> <i class="far fa-newspaper fa-2x mb-2" style="display:block;color:gray;"></i> </div> <div class="col-md-12"> <P> Versuchen Sie: </p> <pre><code>title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1) </code></pre> </div> </div> <div id="alt1490816" class="boxBorderTop row noMargin pt-4"> <div class="col-md-12 text-left"> <i class="far fa-newspaper fa-2x mb-2" style="display:block;color:gray;"></i> </div> <div class="col-md-12"> <P> Mai empfehle ich Ihnen schöne Suppe. Suppe ist eine sehr gute lib alle Ihre HTML-Dokument zu analysieren. </P> <pre><code>soup = BeatifulSoup(html_doc) titleName = soup.title.name </code></pre> </div> </div> <div id="alt1490817" class="boxBorderTop row noMargin pt-4"> <div class="col-md-12 text-left"> <i class="far fa-newspaper fa-2x mb-2" style="display:block;color:gray;"></i> </div> <div class="col-md-12"> <P> Ich würde denken, sollte dies genügen: </p> <pre><code>#!python import re pattern = re.compile(r'<title>([^<]*)</title>', re.MULTILINE|re.IGNORECASE) pattern.search(text) </code></pre> <P> ... vorausgesetzt, dass Ihr Text (HTML) in einer Variablen namens "Text." </P> <P> Dies geht auch davon aus, dass es nicht andere HTML-Tags, die legal innerhalb eines HTML-Titel-Tag eingebettet werden kann und keine Möglichkeit einbetten, um legal andere Zeichen <innerhalb eines solchen Behälters / Block. </P> <P> <strong> Doch </strong> ... </p> <P> Verwenden Sie keine regulären Ausdrücke für HTML-Analyse in Python. Verwenden Sie einen HTML-Parser! (Es sei denn, Sie gehen einen vollständigen Parser zu schreiben, die eine zusätzliche Arbeit sein würde, wenn verschiedene HTML, SGML und XML-Parser bereits in den Standardbibliotheken sind. </P> <P> Wenn Ihr Umgang mit der "realen Welt" <strong> Tag Suppe </strong> HTML (die in jedem SGML / XML-Validator häufig nicht konforme), dann verwenden Sie die <a href = "https: //www.crummy. com / software / BeautifulSoup /“rel = "nofollow noreferrer"> BeautifulSoup </a> Paket. Es ist nicht in den Standardbibliotheken (noch) nicht, aber sie ist breit für diesen Zweck empfohlen. </P> <P> Eine weitere Option ist: <a href="http://lxml.de/" rel="nofollow noreferrer"> lxml </a> ..., die für richtig strukturiert (Standards konform) geschrieben HTML. Aber es hat eine Option zur Verwendung von BeautifulSoup als Parser Rückfall. <a href="http://lxml.de/elementsoup.html" rel="nofollow noreferrer"> ElementSoup </a> </p> </div> </div> </div> </div> </div> </div> <div class="row mt-4"> <div class="col-12"> <div class="attribution"> <div>Lizenziert unter: <a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">CC-BY-SA</a> mit <a href="https://stackoverflow.blog/2009/06/25/attribution-required/" target="_blank">Zuschreibung</a></div> <div>Nicht verbunden mit <a href="https://stackoverflow.com/" target="_blank">StackOverflow</a></div> </div> </div> </div> <div id="share"></div> </div> <div class="row mb-4 adv"> <div class="col-md-12 text-center"> <!-- GeneraCodice - Footer pagina --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5108424997424987" data-ad-slot="5412049179" data-ad-format="auto" data-full-width-responsive="true"></ins> <script defer async crossorigin="anonymous"> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> </div> <aside id="bannerRight" class="col-xs-12 col-md-4 col-lg-3 text-center" > <div class="container mt-4"> <div class="row mb-4 adv"> <div class="col-md-12"> <!-- GeneraCodice - Barra laterale --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5108424997424987" data-ad-slot="1592207755" data-ad-format="auto" data-full-width-responsive="true"></ins> <script defer async crossorigin="anonymous"> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="row adv"> <div class="col-md-12"> <!-- GeneraCodice - Barra laterale 2 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5108424997424987" data-ad-slot="8889943968" data-ad-format="auto" data-full-width-responsive="true"></ins> <script defer async crossorigin="anonymous"> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="row topArticoli justify-content-center"> <div class="col-md-12 col-lg-10 pt-4"> </div> </div> </div> </aside> </div> </section> <!-- DA INSERIRE COLLEGAMENTO A GENERANEWS E GRATISFORGRATIS.COM --> <footer class="site-footer"> <div class="section-free d-block d-md-flex"> <div class="section-newsletter col"> </div> <div class="col content-free-projects mb-2"> <div> <p class="my-3">Nützliche Links</p> </div> <div class="d-flex justify-content-around"> <div></div> <div> <a class="nav-link" href="https://www.generacodice.com/de/tag">Stichworte</a> <a class="nav-link" href="https://www.generacodice.com/de/site/aboutus">Über uns</a> <a class="nav-link" href="https://www.generacodice.com/de/site/contacts">Kontakte</a> <a class="nav-link" href="https://www.generacodice.com/de/site/privacy">Privatsphäre</a> </div> <div> <a class="nav-link social fb" href="https://www.facebook.com/generacodice" target="_blank"><i class="fab fa-facebook"></i> Facebook</a> <a class="nav-link social instagram" href="https://www.instagram.com/genera_codice" target="_blank"><i class="fab fa-instagram"></i> Instagram</a> </div> <div></div> </div> <div class="small-footer-link d-flex align-items-center justify-content-center"> <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> <input type="hidden" name="cmd" value="_s-xclick" /> <input type="hidden" name="hosted_button_id" value="42ZKUPRLM66J2" /> <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" /> </form> </div> </div> </div> <div class="row m-0 justify-content-center text-center p-2"> <div class="col-md-5"> <p>Der Inhalt ist unter Creative Commons lizenziert.</p> <p class="mb-0">Wenn Sie Urheberrechtsverletzungen finden, können Sie uns unter uns kontaktieren <a href="mailto:info@generacodice.com"> info@generacodice.com </a> um die Entfernung des Inhalts zu beantragen.</p> </div> </div> </footer> <div id="scroll-to-top" style="display: block;background:none;"> <img src="https://www.generacodice.com/img/icone/scroll-top.svg" alt="scroll top" style="width:48px;height:48px;background-color:#fff;" /> </div> <!-- Google Analytics --> <!-- Google tag (gtag.js) --> <script src="https://www.googletagmanager.com/gtag/js?id=G-PNYLV6VWJG" async crossorigin="anonymous"></script> <script crossorigin="anonymous" defer> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-PNYLV6VWJG'); </script> <!-- Visualizzare barra ricerca su google --> <script type="application/ld+json" crossorigin="anonymous"> { "@context": "https://schema.org", "@type": "WebSite", "url": "https://www.generacodice.com/", "potentialAction": { "@type": "SearchAction", "target": "https://www.generacodice.com/articolo?ricerca={search_term_string}", "query-input": "required name=search_term_string" } } </script> <!-- Yandex.Metrika counter <script type="text/javascript" defer crossorigin="anonymous"> (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(79291009, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/79291009" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <script>var lingua = "https://www.generacodice.com/de";</script> <script src="/lib/wow.min.js" preload></script> <script src="/lib/js.cookie.min.js" preload></script> <script src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?customize=1&tracking=1&thirdparty=1&always=1&noGeoIp=1&showNoConsent=1&showPolicyLink=1&privacyPage=https%3A%2F%2Fwww.generacodice.com%2Fsite%2Fprivacy" preload></script> <script src="/js/form_ricerca.js" preload></script> <script src="https://kit.fontawesome.com/99a60a9345.js" preload></script> <script src="/js/ads.js" defer="defer" preload></script> <script src="/js/main.js?timestamp=20221207" defer="defer" preload></script> <script src="/assets/44258436/yii.js"></script> <script src="/assets/44258436/yii.validation.js"></script> <script src="/assets/44258436/yii.activeForm.js"></script> <script src="/js/feedback.js" defer></script> <script src="/js/articulate.min.js"></script> <script src="/js/playerTesto.js?202310021220"></script> <script src="/lib/jssocials/jssocials.min.js"></script> <script src="/js/sceditor/minified/sceditor.min.js"></script> <script src="/js/sceditor/minified/formats/xhtml.js"></script> <script src="/js/articolo/details.js?202309292139"></script> <script>jQuery(function ($) { jQuery('#feedback').yiiActiveForm([{"id":"feedbackform-pagina","name":"pagina","container":".field-feedbackform-pagina","input":"#feedbackform-pagina","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages, {"message":"Pagina darf nicht leer sein."});}},{"id":"feedbackform-idargomento","name":"idArgomento","container":".field-feedbackform-idargomento","input":"#feedbackform-idargomento","error":".help-block.help-block-error","validate":function (attribute, value, messages, deferred, $form) {yii.validation.number(value, messages, {"pattern":/^[+-]?\d+$/,"message":"Id Argomento muss eine Ganzzahl sein.","skipOnEmpty":1});}}], []); jQuery('#w0').yiiActiveForm([], []); });</script> <script> window.addEventListener('load', function() { var is_adsense_load = 0 window.addEventListener('scroll', function() { if (is_adsense_load == 0) { is_adsense_load = 1; var ele = document.createElement('script'); ele.async = true; ele.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js' var sc = document.getElementsByTagName('script')[0] sc.parentNode.insertBefore(ele, sc); (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-5108424997424987", enable_page_level_ads: true }); } }) }) </script> </body> </html>