Добавление данных LyngSat в базу
This commit is contained in:
@@ -77,9 +77,11 @@ class LyngSatParser:
|
||||
}
|
||||
return polarization_map.get(polarization.upper(), polarization)
|
||||
|
||||
def get_region_pages(self) -> list[str]:
|
||||
def get_region_pages(self, regions: list[str] | None = None) -> list[str]:
|
||||
html_regions = []
|
||||
for region in self.regions:
|
||||
if regions is None:
|
||||
regions = self.regions
|
||||
for region in regions:
|
||||
url = f"{self.BASE_URL}/{region}.html"
|
||||
payload = {
|
||||
"cmd": "request.get",
|
||||
@@ -94,9 +96,34 @@ class LyngSatParser:
|
||||
print(f"Обработал страницу по {region}")
|
||||
return html_regions
|
||||
|
||||
def get_satellite_urls(self, html_regions: list[str]):
|
||||
sat_names = []
|
||||
sat_urls = []
|
||||
for region_page in html_regions:
|
||||
soup = BeautifulSoup(region_page, "html.parser")
|
||||
|
||||
col_table = soup.find_all("div", class_="desktab")[0]
|
||||
|
||||
tables = col_table.find_next_sibling('table').find_all('table')
|
||||
trs = []
|
||||
for table in tables:
|
||||
trs.extend(table.find_all('tr'))
|
||||
for tr in trs:
|
||||
sat_name = tr.find('span').text
|
||||
if self.target_sats is not None:
|
||||
if sat_name.strip().lower() not in self.target_sats:
|
||||
continue
|
||||
try:
|
||||
sat_url = tr.find_all('a')[2]['href']
|
||||
except IndexError:
|
||||
sat_url = tr.find_all('a')[0]['href']
|
||||
sat_names.append(sat_name)
|
||||
sat_urls.append(sat_url)
|
||||
return sat_names, sat_urls
|
||||
|
||||
def get_satellites_data(self) -> dict[dict]:
|
||||
sat_data = {}
|
||||
for region_page in self.get_region_pages():
|
||||
for region_page in self.get_region_pages(self.regions):
|
||||
soup = BeautifulSoup(region_page, "html.parser")
|
||||
|
||||
col_table = soup.find_all("div", class_="desktab")[0]
|
||||
@@ -368,4 +395,9 @@ class KingOfSatParser:
|
||||
'metadata': data['ini_data']['metadata']
|
||||
}
|
||||
|
||||
return satellite_dict
|
||||
return satellite_dict
|
||||
|
||||
from pprint import pprint
|
||||
lyngsat = LyngSatParser(regions=['europe'], target_sats=['Türksat 3A', 'Intelsat 22'])
|
||||
html_regions = lyngsat.get_region_pages()
|
||||
pprint(lyngsat.get_satellite_urls(html_regions))
|
||||
Reference in New Issue
Block a user