私はwikipediaのテーブルからデータをスクラップしようとしています。テーブルのほとんどのカラムからデータを抜き出す方法を理解しているうちに、カラムに "span"タグと "a"タグがあるため、スクラップするのが難しいカラムが1つあります。PythonでWebスクレイピング中にテーブルからイメージを削除する
具体的には、このページの「アクティブコード」セクションの下の表を参照する場合:https://en.wikipedia.org/wiki/ISO_4217あなたは第5列は、(「スパン」タグの内部で)国の旗の画像が含まれていることがわかりますだけでなく、国名( "a"タグの内側)。誰もがこのテーブルの5番目の列のタグから "a"タグ内のテキストを抽出する方法を知っていますか?これまでのところ私は、次のコードを書かれている:私はターミナルで、このコードを入力
from bs4 import BeautifulSoup
import urllib2
wiki = "https://en.wikipedia.org/wiki/ISO_4217"
header = {'User-Agent': 'Mozilla/5.0'} #Needed to prevent 403 error on Wikipedia
req = urllib2.Request(wiki,headers=header)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page, 'lxml')
code = ""
num = ""
e = ""
currency = ""
country = ""
table = soup.find("table", { "class" : "wikitable sortable" })
f = open('output.csv', 'w')
for row in table.findAll("tr"):
cells = row.findAll("td")
#For each "tr", assign each "td" to a variable.
if len(cells) == 5:
code = cells[0].find(text=True)
num = cells[1].findAll(text=True)
#e = cells[2].find(text=True)
currency = cells[3].find(text=True)
country = cells[4].find(text=True)
for x in range(len(num)):
print(code + ", " + currency + ", " + country)
後、私のようなものを返す:
AED, United Arab Emirates dirham,
AFN, Afghan afghani,
ALL, Albanian lek,
...
をしかし、私はのような何かを返したい: AED、アラブ首長国連邦ディルハム、アラブ首長国連邦 AFN、アフガニ、アフガニスタン ALL、アルバニアレク、アルバニア ...あなたの助けを
感謝。質問をより理解しやすくする方法があれば教えてください。私はスタックオーバーフローのために新しいです。私は、このような質問がまだ答えられていないことを確認するためにフォームをチェックしました。もし私が何かを逃していなければ、私はそれがないと確信しています。
素晴らしいです。 –