【问题标题】:Beautiful Soup Returns Tags and TextBeautiful Soup 返回标签和文本
【发布时间】: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 似乎都没有工作" 没有以什么方式工作?
  • 当我尝试任何一个时,我似乎仍然可以同时获得标签和文本,而不仅仅是文本。

标签: python-2.7 beautifulsoup


【解决方案1】:

您也应该遍历所有找到的tds。你的代码应该是这样的

for tr in soup.find_all("tr"):
    for td in tr.find_all("td")
        f.write(td.text)

【讨论】:

  • 啊!谢谢,我回家试试看。
  • 出于某种原因不得不将“string”替换为“text”,但除此之外效果很好!如果将来有人想使用它,我发现制作最后一行 f.write(td.text + ",") 会生成一个文本文件,该文件很容易在 Excel 中使用文本到列进行转换。
猜你喜欢
  • 1970-01-01
  • 2018-04-26
  • 2019-02-20
  • 2021-05-09
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多