内のテキストを取得する:解析HTML私は文字列に二つの要素内のテキストを取得する必要がある要素
source_code = """<span class="UserName"><a href="#">Martin Elias</a></span>"""
>>> text
'Martin Elias'
どのように私はこれを達成できますか?
内のテキストを取得する:解析HTML私は文字列に二つの要素内のテキストを取得する必要がある要素
source_code = """<span class="UserName"><a href="#">Martin Elias</a></span>"""
>>> text
'Martin Elias'
どのように私はこれを達成できますか?
私は "のpythonの構文解析HTML" を検索し、これが最初の結果だった:このコードは、ここでのpythonのドキュメント
from HTMLParser import HTMLParser
# create a subclass and override the handler methods
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print "Encountered a start tag:", tag
def handle_endtag(self, tag):
print "Encountered an end tag :", tag
def handle_data(self, data):
print "Encountered some data :", data
# instantiate the parser and fed it some HTML
parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'
'<body><h1>Parse me!</h1></body></html>')
から取られ https://docs.python.org/2/library/htmlparser.html
は結果である:
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h1
Encountered some data : Parse me!
Encountered an end tag : h1
Encountered an end tag : body
Encountered an end tag : html
これを使って、HTMLParserのコードを見て、私はこれを思いつきました:
今、あなたは簡単にこれらのリストからデータを抽出することができるはずfrom HTMLParser import HTMLParser
pstring = source_code = """<span class="UserName"><a href="#">Martin Elias</a></span>"""
class myhtmlparser(HTMLParser):
def __init__(self):
self.reset()
self.NEWTAGS = []
self.NEWATTRS = []
self.HTMLDATA = []
def handle_starttag(self, tag, attrs):
self.NEWTAGS.append(tag)
self.NEWATTRS.append(attrs)
def handle_data(self, data):
self.HTMLDATA.append(data)
def clean(self):
self.NEWTAGS = []
self.NEWATTRS = []
self.HTMLDATA = []
parser = myhtmlparser()
parser.feed(pstring)
# Extract data from parser
tags = parser.NEWTAGS
attrs = parser.NEWATTRS
data = parser.HTMLDATA
# Clean the parser
parser.clean()
# Print out our data
print tags
print attrs
print data
:
class myhtmlparser(HTMLParser):
def __init__(self):
self.reset()
self.NEWTAGS = []
self.NEWATTRS = []
self.HTMLDATA = []
def handle_starttag(self, tag, attrs):
self.NEWTAGS.append(tag)
self.NEWATTRS.append(attrs)
def handle_data(self, data):
self.HTMLDATA.append(data)
def clean(self):
self.NEWTAGS = []
self.NEWATTRS = []
self.HTMLDATA = []
あなたはこのようにそれを使用することができます。私はこれが助けて欲しい!
これは美しいです:) – AsheKetchum
Python Beautiful Soup 4ライブラリの使用をお勧めします。
pip install beautifulsoup4
これは、HTML解析を非常に簡単にします。
from bs4 import BeautifulSoup
source_code = """<span class="UserName"><a href="#">Martin Elias</a></span>"""
soup = BeautifulSoup(source_code)
print soup.a.string
>>> 'Martin Elias'
私は質問がpython-2.xタグが付いていることを知っていますが、私はそれが美しいのは、Python 2.xでのみ動作することに注意するべきだと思います。 – LJNielsenDk
美しいスープ4は、2.7と3の両方で動作します。 –
美味しいスープのAPIドキュメントはどこにありますか? –
あなたはまたhtml5libとXPath、there is a good question about it hereを使用して試すことができますが、その答えは期待どおりに動作html5lib作るために覚えておくべき重要な詳細(namespaceHTMLElements
)を持っています。私はそれを変える必要があることを見落としてしまったので、時間を無駄にしてしまいました。
あなたはこのように行うことができます beautifulsoupをインストールし、:ここに猫を肌にする
from BeautifulSoup import BeautifulSoup
source_code = '"""<span class="UserName"><a href="#">Martin Elias</a></span>"""'
soup = BeautifulSoup(source_code)
print soup.find('span',{'class':'UserName'}).text
Theresの方法をいくつか。最終結果は何ですか?あなたはJavaScriptやいくつかのサーバー側の解析を行うことができます。 –