2016-07-03 8 views
0

から値を抽出しますか?私は分裂について考えましたが、あなたは完全な言葉を分けることができるとは思わない。 .count()メソッドで特定の文字で分割できますか?ありがとう、私はこれについていくつかの助けを得ることができればうれしい。 おかげは、私は、この文字列から一部のデータを抽出するいくつかの問題を抱えているHTML文字列(PYTHON)

EDIT:

私は破片がIDでコンテンツを取得していないようでしたので、HTMLに変換することにより、IDを取得しようとしている(それだけで空白だった)

site = "https://10minutemail.com/10MinuteMail/index.html?dswid=9902" 
req = urllib2.Request(site, headers=hdr) 
page = urllib2.urlopen(req) 
content = page.read() 
soup = BeautifulSoup(content) 
address-address" id="mailAddress" readonly="readonly">') 
find = soup.find("class", {"id": "mailAddress"}) 
findId = soup.find(id="mailAddress") 

変数findId版画この:

<input class="mail-address-address" id="mailAddress" readonly="readonly" type="text" value="[email protected]"/>) 

@Sidney

html_line= '''<input class="mail-address-address" id="mailAddress" readonly="readonly" type="text" value="[email protected]"/>)''' 
input_value=html_line.split('value="',1)[1].rsplit('"',1)[0] 
print(input_value) 

ドメイン名が変更されている以外は、これはうまくいきます。 '' 'は私自身の変数(findId)を使うことができないことを意味します。このための回避策はありますか?

+0

いくつかのより多くのコンテキストを与えます。この文字列はどこにありますか?これはあなたのサイトからですか? –

+0

この単純なケースでは、正規表現を使用できます。 – Selcuk

答えて

1

あなたは本当に(ない正規表現または文字列操作を)HTMLを解析し、HTMLパーサを使用する必要があります。たとえば、BeautifulSoupを使用できます。

まず、パッケージをインストールします。

pip install beautifulsoup4

、あなたの入力タグから値を取得するためにそれを使用します。

from bs4 import BeautifulSoup 

soup = BeautifulSoup(html, 'html.parser') 
val = soup.input['value'] # val now contains the string 'THE_EMAIL_ADDRESS_HERE' 
print(val) 
+0

コードのHTMLに複数のIDがあるため、languageFormという最初のIDを出力します。 ) – sas

1

@Daniel Rosemanによると、もう少し文脈があるといいですね。通常、HTMLを解析するときはBeautifulSoupのようなライブラリを使用できます。あなたの場合の良い例はPython beautifulsoup - getting input valueです。

あなたがあなた自身のパーサーをコーディングしたい、またはあなたは、単純な何かが必要な場合は、あなたもsplit()を使用することができた場合:

html_line='''<input class="mail-address-address" id="mailAddress" readonly="readonly" type="text" value="THE_EMAIL_ADDRESS_HERE"/>)''' 
input_value=html_line.split('value="',1)[1].rsplit('"',1)[0] 

私はあなたがBeautifulSoupを使用した方が良いアドバイスをいただきたい(そして、あなたがwan't場合単純なパーサー、よく@シドニーの答えを使用)

1

これは、.split()を使用して扱うのはかなり面倒なので、正規表現を使用することをお勧めします(HTML解析ライブラリを使用しない場合)。正規表現を使用するには、そのように、次の正規表現、" +value=\"(.*?)\""reモジュールをインポートし、使用する必要がありますため

import re 
yourString = '<input class="mail-address-address" id="mailAddress" readonly="readonly" type="text" value="THE_EMAIL_ADDRESS_HERE"/>' 

# m is the match object, containing data about the regex search. 
m = re.search(" +value=\"(.*?)\"", yourString) 

# To retrieve the content captured inside the parentheses inside the regex, look for saved matches. 
value = m.group(1) 

正規表現検索:

  • 1つ以上のスペースを、によって直接続きます、
  • リテラル文字列value="は、直接続いて、
  • 任意の文字
  • ゼロ以上は、正規表現一致は、それがの終わりに遭遇した後に検索保持しないように、非貪欲(これは検索しました 値)。このビットは私たちが保存しようとしているものです。
  • 終値"
関連する問題