Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 7, 2018 16:02:42

GunS86
Зарегистрирован: 2018-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер Python. Пропускает данные.

Добрый день! Вопрос, почему с сайта он берет не все матчи, а находит только первый. Например Испания- Там играется 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()

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version