Python 美联报废问题

Python 美联报废问题,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,我下面的代码(几乎)设法将每个玩家的数据划入行中,列值用逗号分隔。但是,玩家名称似乎有底层子项,这些子项也显示在单独的行中。我只是想要名字的文本,而不是链接。此外,我的输出中重复了一些记录。任何帮助都将不胜感激!我正在使用BS4和Python 3.5。这是我的密码: import urllib import urllib.request from bs4 import BeautifulSoup def make_soup(url): page = urllib.request.url

我下面的代码(几乎)设法将每个玩家的数据划入行中,列值用逗号分隔。但是,玩家名称似乎有底层子项,这些子项也显示在单独的行中。我只是想要名字的文本,而不是链接。此外,我的输出中重复了一些记录。任何帮助都将不胜感激!我正在使用BS4和Python 3.5。这是我的密码:

import urllib
import urllib.request
from bs4 import BeautifulSoup

def make_soup(url):
    page = urllib.request.urlopen(url)
    soupdata = BeautifulSoup(page, "html.parser")
    return soupdata

currentdata = ""
soup = make_soup("http://www.foxsports.com/soccer/stats? competition=1&season=20160&category=STANDARD&pos=0&team=0&isOpp=0&sort=3&sortOrder=0&page=0")
for record in soup.findAll('tr'):
    playerdata = ""
    for data in record.findAll('td'):
        playerdata = playerdata + "," + data.text
        currentdata = currentdata + "\n" + playerdata

        print(currentdata)
输出:

  • 获取列表中的数据,而不是将它们连接在一起,不要使用字符串连接
  • 要取消选择您不需要的
    tr
    ,请使用
    class=False
    ,这将选择不具有
    class
    属性的
    tr
  • get_text()
    可以定义分隔符

  • 如果您正在进行网页抓取,请查看[请求](.使用请求比使用urllib简单得多。谢谢这对我帮助很大。还有一个问题,我如何区分名称和俱乐部首字母缩写,例如1、Sanchez、Alexis、Sanchez、a、ARS?我正在尝试使用某些span元素,但我认为这种方法会更简单。谢谢,非常感谢!
    import urllib
    import urllib.request
    from bs4 import BeautifulSoup
    
    def make_soup(url):
        page = urllib.request.urlopen(url)
        soupdata = BeautifulSoup(page, "html.parser")
        return soupdata
    
    currentdata = ""
    soup = make_soup("http://www.foxsports.com/soccer/stats? competition=1&season=20160&category=STANDARD&pos=0&team=0&isOpp=0&sort=3&sortOrder=0&page=0")
    for record in soup.findAll('tr', class_=False):
    
        row = [data.get_text(',', strip=True) for data in record.findAll('td')]
        print(' '.join(row))
    
    1,Sánchez, Alexis,Sánchez, A.,ARS 21 20 1786 14 7 30 72 3 0
    1,Costa, Diego,Costa, D.,CHE 19 19 1681 14 5 26 57 5 0
    1,Ibrahimovic, Zlatan,Ibrahimovic, Z.,MUN 20 20 1800 14 3 36 89 5 0
    4,Kane, Harry,Kane, H.,TOT 16 16 1360 13 2 27 53 0 0
    5,Lukaku, Romelu,Lukaku, R.,EVE 20 19 1737 12 4 28 55 3 0
    5,Defoe, Jermain,Defoe, J.,SUN 21 21 1882 12 2 18 57 1 0