我試圖從維基百科上的表中抓取數據。雖然我已經想出瞭如何從表格的大多數列中刮取數據,但是我有一列難以抓取,因爲列中存在「span」標記以及「a」標記。在Python中進行網頁抓取時從表中刪除圖像
具體而言,如果您參考此頁「活動代碼」部分中的表格:https://en.wikipedia.org/wiki/ISO_4217,您將看到第五列包含國旗(在「span」標籤內)以及國名(在「a」標籤內)。有誰知道我如何從表格第五列的標籤中提取「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,阿爾巴尼亞列克,阿爾巴尼亞 ...
感謝您的幫助。如果有任何方法可以讓我的問題更容易理解,請告訴我。我是堆棧溢出新手。我已經檢查過這些表格,以確保這樣的問題尚未得到解答,除非我錯過了一些我很確定的事情。
太棒了,這一個工作。 –