質問

欲しい正規表現を抽出し、タイトルからのHTMLページに表示されます。現在のとしています:

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

が正規表現の抽出の内容 <title> いを取り外す必要はありますのタグ?

役に立ちましたか?

解決

正規表現にし、 ( の中)group(1)を使用しますそれならば( re.search にはNoneを返します撮影した文字列を取得するためのpython )の結果を見つけることができませんので、が直接group()を使用しないでください。

title_search = re.search('<title>(.*)</title>', html, re.IGNORECASE)

if title_search:
    title = title_search.group(1)

他のヒント

キャプチャグループを使用してみてください。

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

なおPython 3.8を開始し、の代入式の導入(PEP 572):=オペレータ)は、もし内で直接対戦結果を取り込むことによってクシシュトフKrasońの溶液の上のビットを向上させることが可能です変数や条件などの状態の体でそれを再使用します:

# pattern = '<title>(.*)</title>'
# text = '<title>hello</title>'
if match := re.search(pattern, text, re.IGNORECASE):
  title = match.group(1)
# hello

re.search('<title>(.*)</title>', s, re.IGNORECASE).group(1)

コードの提供作品はExceptionsには対応していません 私が提案してもよい。

getattr(re.search(r"<title>(.*)</title>", s, re.IGNORECASE), 'groups', lambda:[u""])()[0]
パターンが見つかった、または最初に一致していない場合は、

これは、デフォルトでは空の文字列を返します。

試します:

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

私は美しいスープにあなたを勧告することができます。スープは、HTMLドキュメントのすべてを解析するための非常に良いlibです。

soup = BeatifulSoup(html_doc)
titleName = soup.title.name

いうことだけで十分であり:

#!python
import re
pattern = re.compile(r'<title>([^<]*)</title>', re.MULTILINE|re.IGNORECASE)
pattern.search(text)

...このテキスト(HTML)という名前の変数です。"

このものはありませんその他のHTMLタグができる法律の中に組み込HTMLのTITLEタグのないことを法的に組み込みその他 < 文字ではな容器/ブロックです。

しかし ...

使わない正規表現のためのHTMLを解析。利用のHTMLパーサを!(ませんから構成されていフルパーサーの前に現われることとなった工場の様々なHTML、SGMLやXMLパーサでは、標準ライブラリ.

場合の取扱い"実世界" タスープ HTMLは頻繁に不適合載のSGML/XMLのバリデータ)を使用し BeautifulSoup パッケージです。な標準ライブラリ(い)ものが広いのでお勧めです。

別のオプション: lxml ...には適切に構造化(基準conformant)HTML.このオプションをスクフォースメンバーである使用BeautifulSoupとしてパーサー: ElementSoup.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top