【发布时间】:2016-05-27 00:36:25
【问题描述】:
我正在尝试从 ESPN 的网站上抓取大学橄榄球队的招募数据。我已经想出了如何抓取我需要的所有 TD 标签,但我的输出不断返回标签和其中的所有内容以及它们所包含的实际文本。
我在网站上遇到了一个小时的问题,我知道 .text 或 .string 应该可以解决这个问题,但似乎都没有工作。有可能是我把它们放在了错误的地方。
这是我正在运行的代码:
from bs4 import BeautifulSoup
from urllib2 import urlopen
f = open("17athletes.txt", 'w')
sock = urlopen("http://espn.go.com/college-sports/football/recruiting/playerrankings/_/position/athlete/class/2017/view/position")
html = sock.read()
sock.close()
soup = BeautifulSoup (html, "lxml")
for tr in soup.findAll("tr"):
tds = str(tr.find_all("td"))
f.write(tds)
f.close()
这是它返回的一小部分:
<td width="3%">RK</td>, <td width="25%">PLAYER</td>, <td width="6%">POS</td>
我想知道问题是否出在我将str() 放在代码中的位置?或者我想知道是否因为 ESPN 是一个如此复杂的网站,我可能需要做其他事情。我对这一切都非常陌生,但我正在努力学习正确的方法。如果有帮助,请使用 BeautifulSoup 2.4 和 Python 2.7。提前致谢!
【问题讨论】:
-
"..but 似乎都没有工作" 没有以什么方式工作?
-
当我尝试任何一个时,我似乎仍然可以同时获得标签和文本,而不仅仅是文本。