Форум сайта python.su
Добрый день! Вопрос, почему с сайта он берет не все матчи, а находит только первый. Например Испания- Там играется 4 матча, а он находит только первый и идет дальше.
import requests from bs4 import BeautifulSoup import csv from datetime import datetime from multiprocessing import Pool def get_html(url): r = requests.get(url) return r.text # Возращает HTML - код страницы def get_total_pages(html): soup = BeautifulSoup(html, 'lxml') pages = soup.find('ul', class_='liga_menu').find_all('li') links = [] for li in pages: a = li.find('a').get('href') #берем ссылки матчей, это строка(string) link = 'https://1xstavka.ru/' + a links.append(link) #записывает в конец списка return links def get_page_data(html): soup = BeautifulSoup(html, 'lxml') try: name = soup.find('span', class_="c-events__teams").text.strip() except: name = '' try: schet = soup.find('div', class_='c-events__score').text.strip() except: schet = '' data = {'Матч': name, 'Счет': schet} return data def write_csv(data): with open('1xstavka.csv', 'a') as parser: #Парсер название файла куда все сохраниться writer = csv.writer(parser) writer.writerow( (data['Матч'], data['Счет']) ) print(data['Матч'], 'parsed\r') def make_all(url): html = get_html(url) data = get_page_data(html) write_csv(data) def main(): url = 'https://1xstavka.ru/live/Football/' all_links = get_total_pages( get_html(url) ) #for index, url in enumerate(all_links): #index придуманная переменная #html = get_html(url) #data = get_page_data(html) #write_csv(data) #print(index) #map(function, list_) with Pool(15) as p: p.map(make_all, all_links) if __name__ == '__main__': main()
Офлайн