【问题标题】:Parser returns "\n" instead of desired output.解析器返回“\n”而不是所需的输出。
【发布时间】:2014-05-15 10:42:51
【问题描述】:

我必须从this link解析阿德莱德乌鸦的玩家名字,为此我写了一个这样的解析器

import requests                                                                 
from bs4 import BeautifulSoup

href_val = requests.get("http://www.afl.com.au/news/teams?round=9")
soup1 = BeautifulSoup(href_val.content)

players_info_adel = soup1.find_all("ul", {"class" : "team1 team-adel"})
for li in players_info_adel:

    player_names_adel = li.find_all("li", {"class" : "player"})
    #print player_names_adel

#print player_names_adel

for span in player_names_adel:

    if span.find(text = True):
        text = ''.join(span.find(text = True))
        text1 = text.encode('ascii')
        print text

但每当我运行此代码时,我总是会打印出一堆 "\n" 而不是名称。我应该怎么做才能得到球员的名字?

【问题讨论】:

  • 你在print player_names_adel 中得到了什么?您是否考虑过使用str.strip

标签: python beautifulsoup python-requests


【解决方案1】:

您不想循环遍历每个玩家<li> 元素;第一个元素是一个文本节点,其中只有一个换行符。最好使用 Tag.get_text() 从元素中获取所有文本。

使用 CSS 选择器简化代码:

for player in soup1.select('ul.team1 li.player'):
    text = player.get_text().strip()
    print text

这包括玩家编号;您可以使用以下方法将此号码和玩家姓名分开:

number, name = player.span.get_text().strip(), player.span.next_sibling.strip()

改为。

演示:

>>> import requests
>>> from bs4 import BeautifulSoup
>>> href_val = requests.get("http://www.afl.com.au/news/teams?round=9")
>>> soup1 = BeautifulSoup(href_val.content)
>>> for player in soup1.select('ul.team1 li.player'):
...     text = player.get_text().strip()
...     print text
... 
24 Sam Jacobs
32 Patrick Dangerfield
26 Richard Douglas
41 Kyle Hartigan
25 Ben Rutten
16 Luke Brown
33 Brodie Smith
# .. etc ..
>>> for player in soup1.select('ul.team1 li.player'):
...     number, name = player.span.get_text().strip(), player.span.next_sibling.strip()
...     print name
... 
Sam Jacobs
Patrick Dangerfield
Richard Douglas
Kyle Hartigan
Ben Rutten
Luke Brown
Brodie Smith
# ... etc ...

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    相关资源
    最近更新 更多