Уведомления

Группа в Telegram: @pythonsu

#1 Июль 31, 2015 18:56:26

russia
Зарегистрирован: 2015-07-31
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг страницы. Где же информация спряталась?

Всем привет, если кто может помочь, разъясните.

Возникла такая проблема:

Есть страница - http://www.betexplorer.com/soccer/austria/erste-liga/a-salzburg-a-klagenfurt/rX3csmr3/

При парсинге ищу строчку с данными:

“Average odds exchanges not included in calculation 2.54 3.37 2.48”

Вот, собственно, то, что нужно достать и часть кода, где это якобы хранится:



Но почему-то когда парсю, то питон не видит этот код и пишет “None”.

В свою очередь этот сайт ссылает на некий другой сайт:

“Betting odds service provided in cooperation with OddsPortal.com

Видимо, он оттуда тянет эту информацию. А как тогда быть? Где искать её и откуда тянуть? Спасибо.

Офлайн

#2 Июль 31, 2015 19:00:09

russia
Зарегистрирован: 2015-07-31
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг страницы. Где же информация спряталась?

import urllib.request
from bs4 import BeautifulSoup
html = urllib.request.urlopen('http://www.betexplorer.com/soccer/austria/erste-liga/a-salzburg-a-klagenfurt/rX3csmr3/
').read()
soup = BeautifulSoup(html)
div = soup.find('div', id = 'odds-content')
print(div)

“None”

Офлайн

#3 Авг. 1, 2015 08:31:25

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Парсинг страницы. Где же информация спряталась?

Нужные Вам данные отрисовывает js. Попробуйте загрузить страницу через Selenium, а потом работайте с ней через bs

Ну или смотрите в консоли браузера в каком запросе приходят данные и посылайте запросы за данными напрямую.

Отредактировано ayb (Авг. 1, 2015 08:32:09)

Офлайн

#4 Авг. 1, 2015 15:53:01

russia
Зарегистрирован: 2015-07-31
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг страницы. Где же информация спряталась?

Установил selenium. Создал файл selenium.py, ввожу, как написано в интернете:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('http://www.betexplorer.com/soccer/austria/erste-liga/a-salzburg-a-klagenfurt/rX3csmr3/')
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
Получаю:

>>> 
Traceback (most recent call last):
  File "C:\Documents and Settings\Александр\Рабочий стол\selenium.py", line 1, in <module>
    from selenium import webdriver
  File "C:\Documents and Settings\Александр\Рабочий стол\selenium.py", line 1, in <module>
    from selenium import webdriver
ImportError: cannot import name 'webdriver'
>>>

И что это? Всё сделано по инструкциям, а кукиш.

Офлайн

#5 Авг. 2, 2015 10:50:23

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Парсинг страницы. Где же информация спряталась?

Посылайте запросы по этим адресам :

Победа\Ничья
Тоталы
Фора
1x 12 x2
Обе забьют

В параметре e указываете матч. Правда там приходит хтмл, но так всяко лучше будет.

Вот небольшой пример парсинга линии 1X2 :

import requests
import lxml.html
event_code = '2XSluIdK'
url = 'http://www.betexplorer.com/gres/ajax-matchodds.php?t=n&e={}&b=1x2'.\
    format(event_code)
odds = requests.get(url).json()['odds']
data = lxml.html.fromstring(odds)
odds_data = {}
for item in data.xpath('//*[@id="sortable-1"]//tbody')[0]:
    odds_current = []
    for i in item.getchildren():
        if i.tag == 'th':
            bookmaker = i.getchildren()[0].text_content().strip()
        if i.tag == 'td' and i.get('class') != 'unsortable tv':
            odds_current.append(i.get('data-odd'))
        odds_data[bookmaker] = odds_current

Получаем словарь odds_data в котором ключами являются названия букмекеров, а значениями список предложений ( 1 X 2 )

PS Очень хорошие предложения на победу Зари

Отредактировано ayb (Авг. 2, 2015 11:09:26)

Офлайн

#6 Авг. 2, 2015 10:57:35

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Парсинг страницы. Где же информация спряталась?

russia
Создал файл selenium.py
переименовать, происходит конфликт имен.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Авг. 3, 2015 15:47:16

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Парсинг страницы. Где же информация спряталась?

russia
И что это? Всё сделано по инструкциям, а кукиш.

Все скопипастчено, я б сказал.. когда запустится получишь AssertionError Ссылку то ты поменял, а все остальное кто менять будет?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version