Python 有没有办法在bs4中刮取div id?

Python 有没有办法在bs4中刮取div id?,python,beautifulsoup,Python,Beautifulsoup,存在多个具有相同类名但id不同的div类: 我能够在这些类中获取所需的数据,但我必须不断检查页面以找出数据的值。有没有办法把这个数字去掉 下面是我正在抓取的网站和我的代码: 因此,所有名为'starting-lineups\uuuu matchup'的类都在'starting-lineups\uuu container-multi类中。所有的'starting-lineups\uuuu matchup'类都有一个与之关联的编号。用户手动输入此编号以在该特定类中刮取数据。在上面的代码中,哪一个

存在多个具有相同类名但id不同的div类:

我能够在这些类中获取所需的数据,但我必须不断检查页面以找出数据的值。有没有办法把这个数字去掉

下面是我正在抓取的网站和我的代码:

因此,所有名为
'starting-lineups\uuuu matchup'
的类都在
'starting-lineups\uuu container-multi
类中。所有的
'starting-lineups\uuuu matchup'
类都有一个与之关联的编号。用户手动输入此编号以在该特定类中刮取数据。在上面的代码中,哪一个是客场球队的名字


为了找到每场比赛的号码,我一直在浏览网页。我不需要亲自访问该网站并查看html,而是想获取该数字以及与之相关的团队名称。

您可以使用以下方法:

from bs4 import BeautifulSoup import re

soup= BeautifulSoup(html.text,'lxml') 
results = soup.findAll("div", {"data-gamepk" : re.compile(r".*")})
这将列出具有“data gamepk”属性的每个div


PS:使用True而不是re.compile(r“*”)也可能有效。

您可以使用以下方法:

from bs4 import BeautifulSoup import re

soup= BeautifulSoup(html.text,'lxml') 
results = soup.findAll("div", {"data-gamepk" : re.compile(r".*")})
这将列出具有“data gamepk”属性的每个div


PS:使用True而不是re.compile(r“*”)也可能有效。

我希望我正确理解了你的问题:此脚本将打印比赛编号和主客场球队名称:

import requests
from bs4 import BeautifulSoup


url = 'https://www.mlb.com/starting-lineups'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

for game in soup.select('[data-gamepk]'):
    print(game['data-gamepk'])
    print(game.select_one('.starting-lineups__team-name--away').get_text(strip=True))
    print(game.select_one('.starting-lineups__team-name--home').get_text(strip=True))
    print('-' * 80)
印刷品:

631112
Cubs
Pirates
--------------------------------------------------------------------------------
631432
Rangers
Astros
--------------------------------------------------------------------------------
631146
Nationals
Phillies
--------------------------------------------------------------------------------
631234
Yankees
Mets
--------------------------------------------------------------------------------
631368
Padres
Angels
--------------------------------------------------------------------------------
631614
Blue Jays
Red Sox
--------------------------------------------------------------------------------
631405
White Sox
Royals
--------------------------------------------------------------------------------
631370
D-backs
Dodgers
--------------------------------------------------------------------------------
631055
Athletics
Mariners
--------------------------------------------------------------------------------

我希望我正确理解了你的问题:此脚本将打印游戏编号和主客场球队名称:

import requests
from bs4 import BeautifulSoup


url = 'https://www.mlb.com/starting-lineups'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

for game in soup.select('[data-gamepk]'):
    print(game['data-gamepk'])
    print(game.select_one('.starting-lineups__team-name--away').get_text(strip=True))
    print(game.select_one('.starting-lineups__team-name--home').get_text(strip=True))
    print('-' * 80)
印刷品:

631112
Cubs
Pirates
--------------------------------------------------------------------------------
631432
Rangers
Astros
--------------------------------------------------------------------------------
631146
Nationals
Phillies
--------------------------------------------------------------------------------
631234
Yankees
Mets
--------------------------------------------------------------------------------
631368
Padres
Angels
--------------------------------------------------------------------------------
631614
Blue Jays
Red Sox
--------------------------------------------------------------------------------
631405
White Sox
Royals
--------------------------------------------------------------------------------
631370
D-backs
Dodgers
--------------------------------------------------------------------------------
631055
Athletics
Mariners
--------------------------------------------------------------------------------

您想发布url吗?或者一些代码?请添加HTML代码的完整片段和您试图提取的数据。一旦获得元素,您就可以获得属性。例如:
soup.find('div',{'class':'starting-lineups\uuuu matchup'})['data-gamepk']
我刚刚编辑了这篇文章,希望它能增加一些清晰度。你想发布url吗?或者一些代码?请添加HTML代码的完整片段和您试图提取的数据。一旦获得元素,您就可以获得属性。比如说:
soup.find('div',{'class':'starting-lineups\uuuu matchup'})['data-gamepk']
我刚刚编辑了这篇文章,希望它能增加一些清晰度。