2016-05-16 6 views
0

"op.gg" Webサイトの正規表現でゲームプレーヤーの名前をクロールしています。PythonのWebクローリングと正規表現

reqexr.comのウェブサイトを使用して、私が得たいと思っているものの正規表現を確認しました.200人の選手が見つかりました。

しかし、私のpythonコードは機能しません。私はリストに200個のデータを挿入しようとしました。リストは空です。

私は一重引用符( ')は私のPythonコードで動作しないと思う。ここ

はコードの私の作品..です

import requests 
from bs4 import BeautifulSoup 
import re 

user_name = input() 

def hex_user_name(user_name): 
    hex_user_name = [hex(x) for x in user_name.encode('utf-8')] 
    for i,j in enumerate(hex_user_name): 
     hex_user_name[i] = '%'+j[2:].upper() 
    return ''.join(hex_user_name) 

def get_user_name(user_name): 
    q = re.compile('k\'>([^<]{1,16})', re.M) 
    site = 'http://www.op.gg/summoner/userName=' + user_name 
    source_code = requests.get(site) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, 'lxml') 
    name = soup.find_all('a') 
    listB = q.findall(re.sub('[\s\n,]*', '' ,str(name))) 
    print(listB) 

get_user_name(hex_user_name(user_name)) 

私は強く、このライン

q = re.compile('k\'>([^<]{1,16})', re.M) 

に問題がある..しかし、私は間違いを見つけることができなかったことを疑います。

これは私が正規表現に使いたいものです:k\'>([^<]*)

そして이곳은지옥인가(韓国語)が、私はHTMLコードのデータを取得したいものです。

<div class="SummonerName"> 
     <a href="//www.op.gg/summoner/userName=%EC%9D%B4%EA%B3%B3%EC%9D%80%EC%A7%80%EC%98%A5%EC%9D%B8%EA%B0%80" class="Link" target='_blank'>이곳은지옥인가</a> 
</div> 

私は本当にあなたたちは私を助けて感謝..

答えて

0

ので、returns a listsoup.find_all('a')ので、あなたの正規表現は

>>> x = ('<a href="//www.op.gg/summoner/userName=%EC%9D%B4%EA%B3%B3%EC%9D' 
     '%80%EC%A7%80%EC%98%A5%EC%9D%B8%EA%B0%80" class="Link" ' 
     'target=\'_blank\'>이곳은지옥인가</a>') 
>>> import re 
>>> q = re.compile('k\'>([^<]{1,16})', re.M) 
>>> q.findall(x) 
['이곳은지옥인가'] 

おそらく十分plain_text

あなたの正規表現へ
listB = q.findall(re.sub('[\s\n,]*', '' , plain_text)) 

を働いていますそれをループする必要があります。それは簡単に正規表現を破る'および/または"

>>> li = ['k\'b"n', 'sdd'] 
>>> str(li) 
'[\'k\\\'b"n\', \'sdd\']' 
>>> 
>>> li 
['k\'b"n', 'sdd'] 
>>> 
>>> 
>>> li = ["k'b\"n", 'sdd'] 
>>> li 
['k\'b"n', 'sdd'] 
>>> str(li) 
'[\'k\\\'b"n\', \'sdd\']' 
>>> 

をエスケープしますのでstrにリストを強制変換

は、厄介カリフォルニア州。