我在Python3中工作。我的目标是提取一个表的不同值,并将它们放入不同的列表中。在
问题是我不能接受td中“img alt”的值。在
这是我的代码:
from bs4 import BeautifulSoup
import urllib.request
redditFile = urllib.request.urlopen("http://www.mtggoldfish.com/movers/online/all")
redditHtml = redditFile.read()
redditFile.close()
soup = BeautifulSoup(redditHtml)
all_tables = soup.find_all('table')
right_table = soup.find('table', class_='table table-bordered table-striped table-condensed movers-table')
#create a list
A=[]
B=[]
C=[]
D=[]
for row in right_table.findAll("tr"):
cells = row.findAll('td')
increment = row.findAll('span')
colection = row.findAll('img')
link = row.findAll('a')
if len(cells) == 6:
A.append(cells[0].find(text=True))
B.append(increment[0].find(text=True))
C.append(colection[0])
D.append(link[0].find(text=True))
print(A)
print(B)
print(C)
print(D)
这个代码给出了这个结果:
^{pr2}$src=“//资产1。mtggoldfish.com/assets/s-407aaa9c9786d606684c6967c47739c5.gif“/>;,] [“杰斯,弗林的神童”,“盖亚的摇篮”,“诱捕桥”,“叛徒之城”,“彭德尔哈文”,“火暴”,“科尔精神舞者”,“烫伤的塔恩”,“破晓的花冠”,“伯恩柳林”]
但我需要IMG ALT值在(例如,第一个IMG ALT值是“ORI”)
colection variable
我不知道我能做什么。伙计们,你们能帮我吗?
提前谢谢你
一旦有了一个
<img>
节点实例,就可以使用以下方法获得alt值:因为您得到了一个img元素的集合,所以可以遍历它并检索每个元素的alt标记:
^{pr2}$如果只想从img标记中选择alt,只需从表中选择img标记并提取alt属性:
在您自己的循环中,当您似乎只需要一个元素时,您使用的是findAll,如果您只想要第一个元素,那么就使用find
row.find('span')
等。。并且row.find('img')["alt"]
将为每一行提供alt值,查看页面,每个tr只有一个,因此您绝对不需要findAll。在如果要在本地重新创建表,我会将数据放入dict:
^{pr2}$输出:
您将看到它与当前的表数据完全匹配,如果您希望所有获奖者只需将url更改为
http://www.mtggoldfish.com/movers-details/online/all/winners/dod
或者,如果您想将字段拆分,只需拉firs增量:
输出:
相关问题 更多 >
编程相关推荐