删除网页碎片中的新行字符

2024-10-02 04:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图收集棒球阵容数据,但只想返回球员姓名。然而,现在,它给了我位置,换行符,名字,换行符,然后是击球方。例如我想要

'D. Fletcher'

但是我得到了

'LF\nD. Fletcher\nR'

另外,它给了我页面上所有的玩家。我最好按团队对它们进行分组,这可能需要建立某种类型的字典,但不确定代码是什么样子。

我曾尝试使用^ {CD3>}函数,但我相信它只去除先导或尾随的问题,而不是中间。我尝试过研究如何从锚定标签中获取标题信息,但还没有找到如何做到这一点。

from bs4 import BeautifulSoup
import requests


url = 'https://www.rotowire.com/baseball/daily_lineups.htm'

r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")

players = soup.find_all('li', {'class': 'lineup__player'})

####for link in players.find('a'):
#####   print (link.string)

awayPlayers = [player.text.strip() for player in players]
print(awayPlayers)

Tags: textinimporturlforlinkfindrequests
3条回答

您应该只获取a标记的.text,而不是整个li

awayPlayers = [player.find('a').text.strip() for player in players]

这将导致如下结果:

^{pr2}$

假设你想用球队名称和球员构建dict,你可以做如下的事情。我不知道你是否需要突出的球员,比如特雷弗鲍尔?我添加了变量以备需要时保存它们。在

广告框和工具框通过:not pseudo class被排除,它传递一个要忽略的类列表。在

from bs4 import BeautifulSoup as bs
import requests

r = requests.get('https://www.rotowire.com/baseball/daily-lineups.php')
soup = bs(r.content, 'lxml')
team_dict = {}

teams = [item.text for item in soup.select('.lineup__abbr')] #26

matches = {}
i = 0
for teambox in soup.select('.lineups > div:not(.is-ad, .is-tools)'):
    team_visit = teams[i]
    team_home = teams[i + 1]
    highlights = teambox.select('.lineup__player-highlight-name a')
    visit_highlight = highlights[0].text
    home_highlight = highlights[1].text
    match = team_visit + ' v ' + team_home
    visitors = [item['title'] for item in teambox.select('.is-visit .lineup__player [title]')]
    home = [item['title'] for item in teambox.select('.is-home .lineup__player [title]')]
    matches[match] = {'visitor' : [{team_visit : visitors}] ,
                      'home' : [{team_home : home}]
                     }
    i+=1

示例信息:

enter image description here


当前结构:

我想你已经快到了,你只需要稍微调整一下:

 awayPlayers = [player.find('a').text for player in players]

这个列表理解将只从列表中获取名称,然后从锚定中提取文本…您将得到一个名称列表:

^{pr2}$

相关问题 更多 >

    热门问题