Переформатирование скребкового селенового стола

Я очищаю таблицу, которая отображает информацию для спортивной лиги. До сих пор так хорошо для начинающего селена:

from selenium import webdriver import re import pandas as pd driver = webdriver.PhantomJS(executable_path=r'C:/.../bin/phantomjs.exe') driver.get("http://www.oddsportal.com/hockey/usa/nhl-2014-2015/results/#/page/2.html") infotable = driver.find_elements_by_class_name("table-main") matches = driver.find_elements_by_class_name("table-participant") ilist, match = [], [] for i in infotable: ilist.append(i.text) infolist = ilist[0] for i in matches: match.append(i.text) driver.close() home = pd.Series([item.split(' - ')[0] for item in match]) away = pd.Series([item.strip().split(' - ')[1] for item in match]) df = pd.DataFrame({'home' : home, 'away' : away}) date = re.findall("\d\d\s\w\w\w\s\d\d\d\d", infolist) 

В последней строке date сбрасывает все даты в таблице, но я не могу связать их с соответствующей игрой.

Мое мышление: for child/element "under the date", date = last_found_date .

Конечная цель состоит в том, чтобы иметь еще два столбца в df , один с date совпадения и следующий, если какой-либо текст найден рядом с датой, например 'Play Offs' (я могу понять это сам, если я могу получить сортировку date ).

Должен ли я включать другую программу / метод для сохранения порядка тэгов / элементов таблицы?

One Solution collect form web for “Переформатирование скребкового селенового стола”

Вам нужно будет изменить способ извлечения информации о совпадении. Вместо того, чтобы отдельно извлекать home и away команды, сделайте это в одном цикле, также извлекая даты и события:

 from selenium import webdriver import pandas as pd driver = webdriver.PhantomJS() driver.get("http://www.oddsportal.com/hockey/usa/nhl-2014-2015/results/#/page/2.html") data = [] for match in driver.find_elements_by_css_selector("div#tournamentTable tr.deactivate"): home, away = match.find_element_by_class_name("table-participant").text.split(" - ") date = match.find_element_by_xpath(".//preceding::th[contains(@class, 'first2')][1]").text if " - " in date: date, event = date.split(" - ") else: event = "Not specified" data.append({ "home": home.strip(), "away": away.strip(), "date": date.strip(), "event": event.strip() }) driver.close() df = pd.DataFrame(data) print(df) 

Печать:

  away date event home 0 Washington Capitals 25 Apr 2015 Play Offs New York Islanders 1 Minnesota Wild 25 Apr 2015 Play Offs St.Louis Blues 2 Ottawa Senators 25 Apr 2015 Play Offs Montreal Canadiens 3 Pittsburgh Penguins 25 Apr 2015 Play Offs New York Rangers 4 Calgary Flames 24 Apr 2015 Play Offs Vancouver Canucks 5 Chicago Blackhawks 24 Apr 2015 Play Offs Nashville Predators 6 Tampa Bay Lightning 24 Apr 2015 Play Offs Detroit Red Wings 7 New York Islanders 24 Apr 2015 Play Offs Washington Capitals 8 St.Louis Blues 23 Apr 2015 Play Offs Minnesota Wild 9 Anaheim Ducks 23 Apr 2015 Play Offs Winnipeg Jets 10 Montreal Canadiens 23 Apr 2015 Play Offs Ottawa Senators 11 New York Rangers 23 Apr 2015 Play Offs Pittsburgh Penguins 12 Vancouver Canucks 22 Apr 2015 Play Offs Calgary Flames 13 Nashville Predators 22 Apr 2015 Play Offs Chicago Blackhawks 14 Washington Capitals 22 Apr 2015 Play Offs New York Islanders 15 Tampa Bay Lightning 22 Apr 2015 Play Offs Detroit Red Wings 16 Anaheim Ducks 21 Apr 2015 Play Offs Winnipeg Jets 17 St.Louis Blues 21 Apr 2015 Play Offs Minnesota Wild 18 New York Rangers 21 Apr 2015 Play Offs Pittsburgh Penguins 19 Vancouver Canucks 20 Apr 2015 Play Offs Calgary Flames 20 Montreal Canadiens 20 Apr 2015 Play Offs Ottawa Senators 21 Nashville Predators 19 Apr 2015 Play Offs Chicago Blackhawks 22 Washington Capitals 19 Apr 2015 Play Offs New York Islanders 23 Winnipeg Jets 19 Apr 2015 Play Offs Anaheim Ducks 24 Pittsburgh Penguins 19 Apr 2015 Play Offs New York Rangers 25 Minnesota Wild 18 Apr 2015 Play Offs St.Louis Blues 26 Detroit Red Wings 18 Apr 2015 Play Offs Tampa Bay Lightning 27 Calgary Flames 18 Apr 2015 Play Offs Vancouver Canucks 28 Chicago Blackhawks 18 Apr 2015 Play Offs Nashville Predators 29 Ottawa Senators 18 Apr 2015 Play Offs Montreal Canadiens 30 New York Islanders 18 Apr 2015 Play Offs Washington Capitals 31 Winnipeg Jets 17 Apr 2015 Play Offs Anaheim Ducks 32 Minnesota Wild 17 Apr 2015 Play Offs St.Louis Blues 33 Detroit Red Wings 17 Apr 2015 Play Offs Tampa Bay Lightning 34 Pittsburgh Penguins 17 Apr 2015 Play Offs New York Rangers 35 Calgary Flames 16 Apr 2015 Play Offs Vancouver Canucks 36 Chicago Blackhawks 16 Apr 2015 Play Offs Nashville Predators 37 Ottawa Senators 16 Apr 2015 Play Offs Montreal Canadiens 38 New York Islanders 16 Apr 2015 Play Offs Washington Capitals 39 Edmonton Oilers 12 Apr 2015 Not specified Vancouver Canucks 40 Anaheim Ducks 12 Apr 2015 Not specified Arizona Coyotes 41 Chicago Blackhawks 12 Apr 2015 Not specified Colorado Avalanche 42 Nashville Predators 12 Apr 2015 Not specified Dallas Stars 43 Boston Bruins 12 Apr 2015 Not specified Tampa Bay Lightning 44 Pittsburgh Penguins 12 Apr 2015 Not specified Buffalo Sabres 45 Detroit Red Wings 12 Apr 2015 Not specified Carolina Hurricanes 46 New Jersey Devils 12 Apr 2015 Not specified Florida Panthers 47 Columbus Blue Jackets 12 Apr 2015 Not specified New York Islanders 48 Montreal Canadiens 12 Apr 2015 Not specified Toronto Maple Leafs 49 Calgary Flames 11 Apr 2015 Not specified Winnipeg Jets 
  • Как очистить весь контент каждой ссылки с помощью scrapy?
  • Webdriver не может пройти, нажав кнопку следующей страницы
  • Нажмите кнопку в Scrapy
  • Пустой список с scrapy и Xpath
  • Scrapy необходимо просканировать все следующие ссылки на веб-сайте и перейти к следующей странице
  • Scrapy, похоже, не делает DFO
  • Отдельный выходной файл для каждого URL, указанный в списке start_urls паука в scrapy
  • Разбор URL-адресов в sitemap с разным URL-адресом, используя sitemap spider в scrapy, python
  • Django или аналогичный для составных первичных ключей
  • Как использовать скрипинг с подключением к Интернету через прокси с аутентификацией
  • Определение SgmlLinkExtractor 'allow' не работает с Scrapy
  • Python - лучший язык программирования в мире.