2017-06-09 11 views
0

Webページからurllib2を使ってhtmlタグの間に805の数字を入れたいと思います。ここでpython 2 urllib2の応答結果から中国語の文字数を取得

<span class="count">(共805张)</span> 

は、私が数を取得するために書いたPythonコードです:

url = "https://movie.douban.com/celebrity/1044996/photos/" 
request = urllib2.Request(url,headers=headers) 
response = urllib2.urlopen(request) 
content = response.read().decode('utf-8') 
pattern1 = re.compile(r'<span\sclass="count">(.*?)</', re.S) 
result1 = re.search(pattern1, content) 
total_num = result1.group(1) 
total_num = total_num 

をしかし、私はTOTAL_NUMを印刷するとき、コンソールは示しています

u'(\u5171805\u5f20)' 

どのように私は数を得ることができます805は正規表現の使用を期待していますか?

答えて

0

この1によって、あなたの正規表現を変更してみてください:

pattern1 = re.compile(r'<span\sclass="count">[^<\d]*(\d+)[^<\d]*</', re.S) 

この方法では、グループは数だけではなく、その周りに他の文字と一致します。

2

あなたのhtmlタグは、このフォームのように常にある場合:

import re 
a = <span class="count">(共805张)</span> 
# This will work if theString is unicode, 
# or a string in an encoding where ASCII 
# occupies values 0 to 0x7F (latin-1, UTF-8, etc.) 
final = re.findall('\([^\x00-\x7F]+(\d+)[^\x00-\x7F]+\)', a) 

print final 

出力:数を意味

<span class="count">(共805张)</span> 

2つの非ラテン文字とあなたはこのパターンを使用することができます'('')'との間にあります。

['805'] 

PS:いくつかの変更を加えるとasnwerとなります。

関連する問題