ppapppap
@ppapppap (python id)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

python id名をスクレイピング

解決したいこと

初めて質問させて頂きます。
pythonでスクレイピングをしています。
次のようなhtmlの中から10436716(3行目)を抽出したいです。
findやfind_allで検索しても''で返ってきます。
解決方法を教えて頂けますでしょうか。
開発環境 mac anaconda

html

<tbody class="tbody_match>
<tr class="" data-c1="0" data-c2="0" data-c3="0" data-ish="1" data-league_id="11818" data-match_id="104364716"
<td><img class="nation-flag" >src="//static.totalcorner.com/img/countries/Unknown.png"/></td>
<td class="text-center td_league">
<tbody class="tbody_match">

自分で試したこと

・全てのhtmlを取得して文字列に変換
・'data-match_id'を検索してその後の文字列を指定して抽出
上記をループしようとしましたが、同じところをループしてしまいうまくいきませんでした。

ソースコード

res = requests.get(url)
time.sleep(2)
soup = BeautifulSoup(res.text,"html.parser")
time.sleep(2)

game_data=soup.find_all('tbody')
game_data

data=[]
while not game_id =='':
game_id=str(game_data).find('data-match_id')
r = str(game_data)[game_id+len('data-match_id'):]
r[2:10]
data.append(r)

0

1Answer

取得しているソースの状態にもよると思いますが、掲載されている html ソースを表示されている状態のまま1行づつループで回せるならば下記のようなコードで抽出できると思います。

for line in html:
    if 'data-match_id' in line:
        target_num = line.split('"')[1]
        print(target_num)
0Like

Comments

  1. @ppapppap

    Questioner

    回答して頂きありがとうございます。
    無事解決致しました。

Your answer might help someone💌