2017-08-17 28 views
0

最初のテーブルデータを両方ではなくスクラップする方法を理解できません。Python-BeautifulSoupを使用してテーブルデータをスクラブ

<tr> 
<td>WheelDust 
</td> 
<td>A large puff of barely visible brown dust 
</td></tr> 

私だけWheelDustをしたいが、その代わり、私はWheelDustとかろうじて見える茶色のほこり

import requests 
from bs4 import BeautifulSoup 


r = requests.get("https://wiki.garrysmod.com/page/Effects") 

soup = BeautifulSoup(r.content, "html.parser") 

for td in soup.findAll("table"): 
    #--print(td) 
    for a in td.findAll("tr"): 
     print(a.text) 
+0

最初の検索後に繰り返し続けることを望まない場合は、soup.find_allのsoup.find intseadを使用できます。 'WheelDust'を見つけたら、 'break'を使うこともできます。 – Landmaster

+0

ええ、これはテーブルなので、最初のカテゴリのすべてを見つけたいと思っています –

+0

trを入力してからa.find( 'td')をやってみませんか? – Landmaster

答えて

1

の大きなパフを取得し、私はまだあなたが求めているのかわからないんだけど、私はあなたがいると信じて最初の、正しいものだけにアクセスしたいと言っていますか?その場合、これはうまくいかないでしょうか?私はそれを試してみるだろうが、私はウェブサイトへのアクセス権を持っていないと言います。

import requests 
from bs4 import BeautifulSoup 


r = requests.get("https://wiki.garrysmod.com/page/Effects") 

soup = BeautifulSoup(r.content, "html.parser") 

for td in soup.findAll("table"): 
    #--print(td) 
    for a in td.findAll("tr"): 
     print(a.find('td')) 
+0

ああ、それは私が探しているものだ。私はそれがそうしたことを見ていない。ありがとうございました。テキスト属性を追加すると、テキストが返されず、代わりにタグ付きのテキストが返されます –

+0

Yup!それは妥当だと思う。あなたの問題を解決したら、チェックマークにチェックを入れて問題が完了とマークされるようにしてください。 – Landmaster

1

これも試してください。それはあなたにそのテーブルからのすべてのデータを与えるでしょう。

import requests ; from bs4 import BeautifulSoup 

soup = BeautifulSoup(requests.get("https://wiki.garrysmod.com/page/Effects").text, "html.parser") 

table = soup.findAll('table', attrs={'class':'wikitable'})[0] # Changing the index number will give you whichever table you like 
list_of_rows = [[t_data.text for t_data in item.findAll('td')] 
       for item in table.findAll('tr')] 

for data in list_of_rows: 
    print(data) 
関連する問題