В настоящее время я пытаюсь очистить данные футбольных матчей со следующего URL-адреса:
https://liveonsat.com/uk-england-all-football.php
Я могу очистить названия матчей, время начала и имена каналов правильно. К сожалению, у меня возникла проблема с определением правильной даты матча. Ранее я определил с помощью stackoverflow, что элемент, содержащий дату совпадения, может быть вызван с помощью
parent.find
Проблема, с которой я столкнулся, заключается в том, что первая очищенная дата сохраняется во всех очищенных совпадениях даже если конкретная игра не в этот день. Например, если я запускаю код сегодня, он показывает дату совпадения для всех совпадений как суббота, 11 июля, даже если некоторые совпадения, которые были очищены, относятся к разным датам.
На данный момент я не уверен, что проблема может быть, и был бы чрезвычайно благодарен, если бы кто-нибудь мог мне помочь или указать мне правильное направление, чтобы попытаться решить эту проблему. Сначала я подумал, что проблема связана с элементом HTML, который был выбран для получения даты совпадения, но я изменил это на предыдущие родительские элементы для тестирования, и дата не очищается вообще, поэтому кажется, что элемент, выбранный в настоящее время для Дата сбора данных верна, но, возможно, я неправильно ее реализовал.
Чтобы помочь, я оставил комментарий рядом с элементом даты матча, с которым у меня возникла проблема.
import requests
import time
import csv
import sys
from bs4 import BeautifulSoup
import tkinter as tk
from tkinter import messagebox
from tkinter import *
from PIL import ImageTk, Image
def makesoup(url):
page=requests.get(url)
return BeautifulSoup(page.text,"lxml")
def matchscrape(g_data):
for match in g_data:
competitors = match.find('div', class_='fix').text
match_date = match.parent.find('h2',class_='time_head').text # this is used to scrape the match date as it is not contained within "div", {"class": "blockfix"}))
match_time = match.find('div',class_='fLeft_time_live').text.strip()
print("Competitors ", competitors)
print("Match date", match_date)
print("Match time", match_time)
#Match time
channel = match.find_all("td", {"class": "chan_col"})
for i in channel:
print(i.get_text().strip())
def matches():
soup=makesoup(url = "https://liveonsat.com/uk-england-all-football.php")
matchscrape(g_data = soup.findAll("div", {"class": "blockfix"}))
root = tk.Tk()
root.resizable(False, False)
root.geomAetry("600x600")
root.wm_title("liveonsat scraper")
Label = tk.Label(root, text = 'liveonsat scraper', font = ('Comic Sans MS',18))
button = tk.Button(root, text="Scrape Matches", command=matches)
button3 = tk.Button(root, text = "Quit Program", command=quit)
Label.pack()
button.pack()
button3.pack()
status_label = tk.Label(text="")
status_label.pack()
root.mainloop()
Ниже приведен соответствующий пример HTML код сайта, который я сканирую:
<div style="clear:right"> <div class=floatAndClearL><h2 class = sport_head >Football</h2></div> <!-- sport_head -->
<div class=floatAndClearL><h2 class = time_head>Saturday, 11th July</h2></div> <!-- time_head --> <div><span class = comp_head>English Championship - Week 43</span></div>
<div class = blockfix > <!-- block 1-->
<div class=fix> <!-- around fixture and notes 2-->
<div class=fix_text> <!-- around fixture text 3-->
<div class = imgCenter><span><img src="../img/team/england.gif"></span></div>
<div class = fLeft style="width:270px;text-align:center;background-color:#ffd379;color:#800000;font-size:10pt;font-family:Tahoma, Geneva, sans-serif">Derby County v Brentford</div>
<div class = imgCenter><img src="../img/team/england.gif"></div>
</div> <!-- around fixture text 3 ENDS-->
<div class=notes></div>
</div> <!-- around fixture and notes 2 ENDS-->
<div class = fLeft> <!-- around all of channel types 2--> <div> <!-- around channel type group 3-->
<div class=fLeft_icon_live_l> <!-- around icon 4-->
<img src="../img/icon/live3.png"/>
</div>
<div class=fLeft_time_live> <!-- around icon 4-->
ST: 12:30
</div> <!-- around icon 4 ENDS--> <div class = fLeft_live> <!-- around all tables of a channel type 4--> <table border="0" cellspacing="0" cellpadding="0"><tr><td class=chan_col> <a href="https://connect.bein.net/" target="_blank" class = chan_live_iptvcable> beIN Connect MENA ?</a></td><td width = 0></td>
</tr></table> <table border="0" cellspacing="0" cellpadding="0"><tr><td class=chan_col> <a href="https://tr.beinsports.com/kullanici/giris?ReturnUrl=" target="_blank" class = chan_live_iptvcable> beIN Connect TURKEY ?</a></td><td width = 0></td>