Python for循环未从beautifulsoup刮取中拾取所有值

Python for循环未从beautifulsoup刮取中拾取所有值,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我只是在玩,尝试学习使用python和请求以及beautifulsoup进行web抓取。我无法像我试图遵循的一些说明那样循环 我试图完成的只是输出日期和此页面中的团队列表: 这是我的密码: from datetime import datetime from flask import render_template from testApp import app from bs4 import BeautifulSoup import requests source = requests.g

我只是在玩,尝试学习使用python和请求以及beautifulsoup进行web抓取。我无法像我试图遵循的一些说明那样循环

我试图完成的只是输出日期和此页面中的团队列表:

这是我的密码:

from datetime import datetime
from flask import render_template
from testApp import app
from bs4 import BeautifulSoup

import requests

source = requests.get('http://www.vegasinsider.com/mlb/odds/las-vegas/').text

soup = BeautifulSoup(source, "lxml")

tbl = soup.find('table', class_='frodds-data-tbl')

for matchups in tbl.find_all('td', class_= 'viCellBg1'):
    gameDate = matchups.span.text
    print(gameDate)

    team = matchups.b.a.text
    print(team)

    print()
当尝试执行时,它将首先在设置“
gameDate
”变量时失败,该变量带有
“AttributeError”(“NoneType”对象没有属性“text”)

我的印象是,一旦我有了我想要的目标对象,我就可以通过循环和级联标记来定位我要查找的文本,但这不起作用

有人能看看我上面的代码并告诉我我做错了什么吗?我非常感谢在这方面的任何帮助和见解,因为我是个新手


谢谢!

您可以检查配对中是否存在span,请尝试以下操作:

source = requests.get('http://www.vegasinsider.com/mlb/odds/las-vegas/').text

soup = BeautifulSoup(source, "html.parser")
tbl = soup.find('table', class_='frodds-data-tbl')

for matchups in tbl.find_all('td', class_= 'viCellBg1'):
    if matchups.span is not None:
        gameDate = matchups.span.text
        print(gameDate)

    for b_ in matchups.find_all('b'):
        print(b_.a.text)

您的预期输出是stll不清楚。
matchups.span.text
中出现错误
.text
。调试代码以检查它是否具有
'text
属性。这是解决方案,谢谢。对于此html的结构,我只需稍微修改此代码即可找到两个td类:用于tbl中的匹配('td',{'class':['viCellBg1','viCellBg2']}):