Форум сайта python.su
0
Здравствуйте. Я экстра новичёк. Мне нужно с помощью питона ( выбрал питон что бы в следствии дополнить функционал и переместить в бота телеграмм) взять данные из таблицы ( в каждой строке есть 4 ключевых так сказать ячейки но с анализом я думаю что разберусь) и после анализа потом забить в так сказать форму на другом сайте. С забитием в форму я ещё не разбирался но сегодня убил пол дня на попытки Парсинга. Хотел бы поинтересоваться у вас через какие инструменты реализовать парсинг? В приведённом ниже коде я смог выхватить всю таблицу но когда попытался каким либо образом отсортировать их на нужные и не нужные меня ждал провал. Я посмотрел в в коде страницы к какому классу принадлежат нужные мне данные но при попытке сортировки я получал или только первую строку ( скорее единственную а не обязательно первую) или вообще нечего не получал.
Наверно много воды налил.
То на что я рассчитываю: вы подскажите как это легче сделать ( легче для моего понимания костылёвость кода меня не волнует на данном этапе)
в приложен файле код который может брать в всю таблицу на странице ( попытку брать отдельные строки я закомментировал)
Прикреплённый файлы:
hi.py (593 байта)
Офлайн
76
Как-то так
import urllib.request from bs4 import BeautifulSoup def get_html(url): response = urllib.request.urlopen(url) return response.read() def parse(html): soup = BeautifulSoup(html, "html.parser") projects=[] table = soup.find_all('tr',class_='belowHeader') n = 1 for row in table: print('№%i' % (n)) print('League - ', row.find('td', {'class': 'tdleaguemw'}).text) print('Date - ', row.find('td', {'class': 'tddate1mw'}).text) team = row.find_all('td', {'class': 'tdteamname2'}) print('Home - ', team[0].text) print('Away - ', team[1].text) n += 1 #print (table) def main(): parse(get_html('http://www.arbworld.net/en/moneyway/mw-1-x-2')) if __name__ == '__main__': main()
Офлайн
0
Спасибо за помощь.
У меня возникла ещё одна проблема.
Я сделал что бы данные начинали выводиться при условии что коэффициент будет больше 2,5 это было легко ( хотя после этого он почему то выводится в но думаю что это не критично и легко исправимо) но вот когда я хочу сделать ещё одно условие у меня появились трудности
Данные выводятся вот в таком формате “56.5 %€ 1 262” мне надо сортировать по % и по €
а значит мне надо
1) разделить эту “строку” на две float ,переменные которые я буду прогонять через условие, и также убрать знаки %€ и пробел между числом
Подскажите как это сделать
Прикреплённый файлы:
hi.py (1,0 KБ)
Офлайн
253
Свои попытки выкладывайте лучше текстом обернутым тегом code. И только то в чем проблема. Не всем охота скачивать и просматривать весь ваш код.
У вас данные не размечены в html Тут преобразования делают обычно регулярными выражениями
import re a=" 56.5 %€ 1 262" b=re.sub(" +", "", a) c=re.split("%€",b)
Офлайн
0
спасибо учту
не подскажите как от избавиться?
Офлайн
0
тупанул это же просто обозначение массива
Офлайн
0
Здравствуйте
И снова обращаюсь к вам.
Как мне сделать что бы в создаваемом мною файле были только актуальные данные? Мне надо что бы в этом файле были только данные для будущих матчей.
Я думаю что надо как то искать в каждой строке текстового файла данные по времени и если они устаревшие ( сравнивать буду с системным временем) то удалять Всю строку.
И вообще как вы подскажите организовать эти данные для их дальнейшего использования? Я собираюсь потом брать из этого файла данные и опять таки с помощью кода искать на сайте подходящие матчи.
не уверен что правильно код к сообщению прикрепил поэтому ещё исходник приложу
#буду комментировать каждый чих что бы случайно что то важное не забыть указать import urllib.request import re from bs4 import BeautifulSoup def get_html(url): response = urllib.request.urlopen(url) return response.read() def parse(html): soup = BeautifulSoup(html, "html.parser") projects=[] table = soup.find_all('tr',class_='belowHeader') n = 1 #ввёл эту переменную что бы было куда прибавлять данные p = "" for row in table: #закомментировал принты так как могут понадобиться #print('№%i' % (n)) #приложил к себе тот кусок кода который вы мне дали a = row.find('td', {'class': 'tdpercentmw2'}).text b = re.sub(" +", "", a) c = re.split("%€", b) c= [float(elem) for elem in c] koof = row.find('td', {'class': 'tdpercentmw1'}) koof = [float(elem) for elem in koof] if koof[0] > 2.5 and c[0]>65 and c[-1]>1000: #присваиваю переменным отдельные части нужных мне данные что бы потом сложить в один q=row.find('td', {'class': 'tddate1mw'}).text #print('время игры - ', row.find('td', {'class': 'tddate1mw'}).text) w=row.find('td', {'class': 'tdteamname2'}).text #print('название команды - ', row.find('td', {'class': 'tdteamname2'}).text) #избавляюсь от лишних знаков a = row.find('td', {'class': 'tdpercentmw2'}).text b = re.sub(" +", "", a) c = re.split("%€", b) #print('процент от общей суммы и сумма денег - ', row.find('td', {'class': 'tdpercentmw2'}).text) r=row.find('td', {'class': 'tdpercentmw1'}).text #print('коэффициент 1 команды - ', row.find('td', {'class': 'tdpercentmw1'}).text ) #в "T" плюсую все свои данные t="время"+" "+q+" "+"название команды"+" "+w+" "+"процент от общей суммы"+" "+c[0]+" "+"сумма денег"+" "+c[1]+" "+"коэффициент 1 команды"+" "+r # в "p" собираю все "t" что бы потом одной переменной перенести в файл p=p+t + '\n' n += 1 #просто решил сделать небольшой элемент управления if p!="": print("напиши 'да' если хочешь вывести ответ в файл или напиши нет что бы прочто увидеть его ") b=input() if b=='да': """создаю новый файл и заношу туда "p" но мне кажется что если я захочу что бы этот файл был в актуальном состоянии то мне приведётся это перенести наверх там где я данные ищу на сайте или надо будет здесь как то сделать анализ и убирание лишних строк""" my_file = open('stavka.txt', 'w') my_file.write(p) my_file.close() else: print(p) else: print("подходящих матчей не обнаружено ") #извиняюсь за кривой код и излишнии комментарии def main(): parse(get_html('http://www.arbworld.net/en/moneyway/mw-1-x-2')) if __name__ == '__main__': main()
Прикреплённый файлы:
parsing.py (3,8 KБ)
Офлайн
0
Только сейчас заметил как тупо назвал тему….
наверно текстовый файл это лишнее
как сделать что бы данные которые я отсортировал обновлялись в зависимости от времени?
Офлайн
253
Igorh1997Так напишите как будете использовать. А так разговор беспредметен. Вам похоже надо общий скелет программы продумать. Сразу отмечу, в питоне нет объекта “строка текстового файла”, вам надо думать в других терминах.
И вообще как вы подскажите организовать эти данные для их дальнейшего использования?
Офлайн