2016-03-30 12 views
1

私は99damageトップCS:GOプレーヤーのリストを掻き集めようとしています。プレーヤーの名前を取得することに問題があります。タグ間のテキストを取得BeautifulSoup4

<a href="http://csgo.99damage.de/edb/player/4151-krimz" class="item small"> 
    <span stype="width:80px;"> 1. </span> 
    <span style="width: 280px;"> 
     <img src="https://cdn1.gamesports.net/img/flags/se.gif" border="0" alt="se" title="Sweden"> 
     " KRiMZ " 
    </span> 

は「KRiMZは、」私はこのケースで取得しようとplayer's名ですが、私はちょうどKRiMZを検索can't他の多くの名前があります。ウェブを検索して解決策を探しましたが、私の問題を解決する方法を見つけませんでした。

+0

他にどのようなコードを試しましたか? – n1c9

答えて

1

私は(選手プロフィールURLのplayer一部に基づいて)CSS selectorを使用して、すべてのプレーヤーの要素を検索し、内部の最初の2つのスパンを見つけるだろう - 最初の1ランクになり、二 - ユーザ名:

for player in soup.select("#content a[href*="player/"]"): 
    rank, name = player.find_all("span")[:2] 
    print(rank.get_text(strip=True), name.get_text(strip=True)) 

そして、ここで私が実行しています完全なコードです:

import requests 
from bs4 import BeautifulSoup 

url = "http://csgo.99damage.de/de/edb/players" 
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"}) 

soup = BeautifulSoup(response.content, "html.parser") 
for player in soup.select('#content a[href*="player/"]'): 
    rank, name = player.find_all("span")[:2] 
    print(rank.get_text(strip=True), name.get_text(strip=True)) 

プリント:

1. KRiMZ 
2. olofmeister 
3. JW 
4. flusha 
5. dennis 
6. dev1ce 
7. dupreeh 
8. Xyp9x 
9. Karrigan 
10. cajunb 
11. friberg 
12. GeT_RiGhT 
13. f0rest 
14. Xizt 
15. flamiE 
16. GuardiaN 
17. seized 
18. Edward 
19. Zeus 
20. kioShiMa 
21. pronax 
22. Happy 
23. NBK 
+0

最初に、答えてくれてありがとうございますが、それは私にエラーを与えます: 'トレースバック(最近の最後の呼び出し): ファイル" /Users/me/Documents/textscraper2.py "、行29、 ランク、名前=プレーヤー.find_all( "span")[:2] ValueError:アンパックする値が不十分(期待値2、0)。 – Crouder

+0

@Crouder確かに、申し訳ありません。 – alecxe

+0

ありがとう、それは今動作します – Crouder

関連する問題