Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Beauty Soup返回标记和文本_Python 2.7_Beautifulsoup - Fatal编程技术网

Python 2.7 Beauty Soup返回标记和文本

Python 2.7 Beauty Soup返回标记和文本,python-2.7,beautifulsoup,Python 2.7,Beautifulsoup,我正试图从ESPN的网站上搜集大学足球招生数据。我已经想出了如何刮取我需要的所有TD标签,但我的输出会不断返回标签和其中的所有内容,以及它们所包含的实际文本 我已经在网站上问了几个小时的问题,我知道.text或.string应该可以解决这个问题,但两者似乎都不起作用。我可能把它们放错地方了 以下是我正在运行的代码: from bs4 import BeautifulSoup from urllib2 import urlopen f = open("17athletes.txt", 'w')

我正试图从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>
RK、播放器、POS

我想知道问题是否出在我把
str()
放在代码中的什么地方?或者我想知道是否因为ESPN是一个如此复杂的网站,我还需要做些别的事情。我对这一切都非常陌生,但我正在尽我最大的努力学习正确的方法。如果有帮助的话,可以使用BeautifulSoup2.4和Python2.7。提前谢谢

您也应该循环查看您找到的所有
td
s。您的代码应该如下所示

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

“。但两者似乎都不起作用”不起作用的方式是什么?当我尝试其中任何一种方式时,我似乎仍然得到标签和文本,而不仅仅是文本。啊!谢谢你,我回家后会试试的。出于某种原因,我不得不用“文本”替换“字符串”,但在其他方面效果很好!如果将来有人想使用它,我发现最后一行f.write(td.text+“,”)生成一个文本文件,在Excel中使用文本转换为列非常容易。