Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我怎样才能刮去所有击球手的名字?_Python_Web Scraping_Beautifulsoup_Python Requests - Fatal编程技术网

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"})]