Красивый суп не находит CSS селектор - PullRequest
0 голосов
/ 01 декабря 2018

Я использую Beautiful Soup и Requests, чтобы попытаться очистить данные с веб-сайта, и у меня возникают трудности с извлечением данных с помощью определенного селектора CSS.Я использую SelectorGadget (https://selectorgadget.com/), чтобы идентифицировать селектор, который я ищу на этом сайте: https://www.oddsshark.com/ncaab/odds .op-bovada.\lv возвращается им. Однако это не работает, и при этом не удается избежатьобратная косая черта. Я пробовал несколько вариантов этого, наряду с охотой в Интернете, и мне не повезло. Я немного новичок в питоне, так что у меня есть догадка, я пропускаю что-то очевидное.

Этот код воспроизводит проблему, с которой я сталкиваюсь.

import requests, bs4
res = requests.get('https://www.oddsshark.com/ncaab/odds')
odds = bs4.BeautifulSoup(res.text, 'html.parser')

# This, another identifier from the same site, works fine.
print(str(len(odds.select('.op-opening'))))

# However, this does not.
print(str(len(odds.select('.op-bovada.\lv'))))
print(str(len(odds.select('.op-bovada.\\lv'))))

У меня не было проблем с этим в R - ему просто требовалась двойная обратная косая черта, поэтому я знаю, что там есть данные, но ясейчас бьюсь головой о стену в Python.

1 Ответ

0 голосов
/ 03 декабря 2018

Почему бы не использовать метод поиска красивых супов?

print(len(odds.find_all(class_='op-bovada.lv')))

Проблема возникает из-за способа, которым select анализирует передаваемую строку.идентифицирует класс, однако в этом случае.является частью класса, поэтому синтаксический анализатор не интерпретирует его правильно.Пройдя мимо.вместо этого в аргумент класса find_all вы получите желаемый эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...