для цикла не собирая все значения из скребков Beautifulsoup - PullRequest
0 голосов
/ 24 мая 2018

Я просто играю и пытаюсь научиться веб-скрепингу, используя python с запросами и beautifulsoup.Я не могу выполнить цикл, как некоторые инструкции, которым я пытался следовать.

То, что я пытаюсь выполнить, - просто вывести дату и список команд с этой страницы: http://www.vegasinsider.com/mlb/odds/las-vegas/

Вот мой код:

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' object has no attribute 'text'",)

У меня сложилось впечатление, что, как только у меня появится объект, на который я хочу нацелиться, я могу выполнить цикли разметка, чтобы найти текст, который я ищу, но это не сработало.

Может кто-нибудь взглянуть на мой код выше и сказать, что я делаю не так?Я очень ценю любую помощь и понимание этого, так как я довольно новый.

Спасибо!

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете проверить, существует ли 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...