0

私は本当に厄介な問題を抱えています.答えはおそらく非常に簡単ですが、2と2を一緒にすることはできません...

次のような文字列の例があります。

<a href="javascript:void(0);" onclick="viewsite(38903);" class="followbutton">Visit</a>

38903という数字は、ページを読み込むたびに異なります。ページをロードするたびにこれらの数値を解析できるメソッドが必要です。上記の HTML コードの一部を取得して含めるには十分ですが、数字だけを取得することはできません。

繰り返しますが、おそらく非常に簡単なことですが、それを理解することはできません. 前もって感謝します!

4

3 に答える 3

1

BeautifulSoupを使用している場合、onclick文字列だけを取得するのは非常に簡単です。これにより、これが簡単になります。しかし、これを行うための本当に大雑把な方法は次のとおりです。

import re
result = re.sub("\D", "", html_string)[1:]

\D数字以外のすべてに一致するため、これにより、文字列内の数字以外のすべてが削除されます。次に、スライスを取り、から「0」を取り除きますjavascript:void(0)

その他のオプション:re.searchを使用して一連の数字を取得し、2番目のグループを取得します。または、re.searchを使用して、部分文字列の後の一連の数字を照合します。ここで、部分文字列は<a href="javascript:void(0);" onclick="viewsite(です。

編集:BeautifulSoupを使用しているようです。aその場合、おそらくタグを表すオブジェクトがあります。オブジェクトの名前が次のとおりであると仮定しましょうa

import re
result = re.sub("\D", "", a['onclick'])
于 2012-05-08T05:36:29.737 に答える
1
import re
r = re.compile('viewsite\((\d+)\)')
r.findall(s)

これは特に、viewsite() へのすべての数字の引数を探します。HTML文字列に他の数字が表示されると、間違った結果が得られるようになるため、Andrewの回答よりもこれを好むかもしれません。

于 2012-05-08T05:42:07.820 に答える
0
>>> import re
>>> grabbed_html = '''<a href="javascript:void(0);" onclick="viewsite(38903);" class="followbutton">Visit</a>'''
>>> re.findall(r'viewsite\((\d+)\);',grabbedhtml)[0]
'38903'
于 2012-05-08T05:41:44.137 に答える