Python 我怎样才能刮去所有击球手的名字?
此代码只返回列表中的第一个击球手。我怎么知道他们的名字?我是新的编码,所以任何帮助将不胜感激。提前感谢您抽出时间!=) 当我尝试时:Python 我怎样才能刮去所有击球手的名字?,python,web-scraping,beautifulsoup,python-requests,Python,Web Scraping,Beautifulsoup,Python Requests,此代码只返回列表中的第一个击球手。我怎么知道他们的名字?我是新的编码,所以任何帮助将不胜感激。提前感谢您抽出时间!=) 当我尝试时: 打印(soup.find_All('div',{'class':'players'}).a.text) 我收到了这个: TypeError:“非类型”对象不可调用 当我尝试时: 打印(soup.findAll('div',{'class':'players'}).a.text) 我收到了这个: AttributeError:ResultSet对象没有属性“a”。您
打印(soup.find_All('div',{'class':'players'}).a.text) 我收到了这个:
TypeError:“非类型”对象不可调用 当我尝试时:
打印(soup.findAll('div',{'class':'players'}).a.text) 我收到了这个:
AttributeError:ResultSet对象没有属性“a”。您可能将项目列表视为单个项目。当您打算调用find()时是否调用了find_all()?该“find”方法只返回第一个匹配项。 试试“findAll”吧
请参见尝试以下方法从该网页获取所有玩家姓名。这里的技巧是使用连接到所有播放器的正确类名,在本例中是
播放器链接
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)
分解“查找”语句:
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)
soup.find-->返回参数的第一个实例
参数1-->div-->查找“div”标记
参数2-->带有键“class”和值“players”的字典-->查找带有class='players'的第一个div标记
然后调用“a.text”-->在锚定标记中查找文本
只需将“find”替换为“findAll”将破坏“a.text”,而不是现在的单个标记,您正在列表上调用“a.text”。最好将操作分为两个步骤:
print(soup.find('div', {'class': 'players'}).a.text)
使用列表理解:
batters_div = soup.findAll('div',{"class":"players"})
for batter in batters_div:
print(batter.a.text)
…您编写的第二行代码(以“batters_div”开头)打印出了每队的第一名击球手。我希望他们都能来。我不知道在哪里输入你提到的第三行代码。谢谢你的帮助。我是新来的,有很多东西要学明白了。我没有查看实际页面及其DOM。。。我刚刚指出了一种方法,可以成功地对findAll的结果调用“a.text”——这就是您的问题所在。另外,第三行代码是实现前两行功能的另一种方法。我感谢您的帮助!再次感谢@pushkarchintaluri这能回答你的问题吗?
batters = [batter.a.text for batter in soup.findAll('div',{"class":"players"})]