from bs4 import BeautifulSoup
import requests
url = 'http://www.baseballpress.com/lineups'
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
print(soup.find('div', {'class': 'players'}).a.text)
此代码仅返回列表中的第一个击球员。我如何获得他们的所有名字?我是编码的新手,所以将不胜感激。在此先感谢您的时间! =)
当我尝试时:
print(soup.find_All('div',{'class':'players'})。a.text)
我收到了:
TypeError:“ NoneType”对象不可调用
当我尝试时:
print(soup.findAll('div',{'class':'players'})。a.text)
我收到了:
AttributeError:ResultSet对象没有属性“ a”。您可能正在将项目列表像单个项目一样对待。当您打算致电find()时,您是否致电过find_all()?
答案 0 :(得分:1)
请尝试以下方法从该网页获取所有玩家名称。这里的窍门是使用连接到所有玩家的正确的类名,在本例中为player-link
。
from bs4 import BeautifulSoup
import requests
url = 'http://www.baseballpress.com/lineups'
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
for names in soup.find_all(class_='player-link'):
print(names.text)
答案 1 :(得分:1)
打破“ find”声明:
print(soup.find('div', {'class': 'players'}).a.text)
soup.find->返回参数的第一个实例
参数1->'div'->查找'div'标签
参数2->具有键“ class”和值“ players”的字典->查找具有class =“ players”的第一个div标签
然后调用“ a.text”->在锚标记中查找文本。
仅用“ findAll”替换“ find”将破坏“ a.text”,而不是单个标签,而是在列表上调用“ a.text”。最好将操作分为两个步骤:
batters_div = soup.findAll('div',{"class":"players"})
for batter in batters_div:
print(batter.a.text)
使用列表理解:
batters = [batter.a.text for batter in soup.findAll('div',{"class":"players"})]
答案 2 :(得分:0)
“ find”方法仅返回第一个匹配项。 尝试使用“ findAll”。