Я написал скрипт на python, чтобы очистить заголовки различных предметов, расположенных в правой части области рядом с картой его целевой страницы.Есть две ссылки, которые я использовал в своем скрипте: одна имеет пагинацию, а другая - нет.
Когда я выполняю свой скрипт, он сначала проверяет ссылки на пагинацию.Если он находит его, он передает ссылки в функцию get_paginated_info()
для вывода результата.Однако, если ему не удается найти ссылки на страницы, он передает объект-суппорт в функцию get_info()
и печатает результат там.На данный момент скрипт работает именно так, как я описал.
Как заставить мой скрипт печатать результат в функции get_info()
, только если ссылка имеет нумерацию страниц или не соответствуетлогику, которую я уже пытался применить, так как я хочу исключить функцию get_paginated_info()
из моего скрипта?
Это моя попытка:
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
urls = (
'https://www.mobilehome.net/mobile-home-park-directory/maine/all',
'https://www.mobilehome.net/mobile-home-park-directory/rhode-island/all',
)
def get_names(link):
r = requests.get(link)
soup = BeautifulSoup(r.text,"lxml")
items = soup.select_one(".pagination a.next_page")
if items:
npagelink = items.find_previous_sibling().get("href").split("/")[-1]
return [get_paginated_info(link + "/page/{}".format(page)) for page in range(1,int(npagelink)+1)]
else:
return [get_info(soup)]
def get_info(soup):
print("================links without pagination==============")
for items in soup.select("td[class='table-row-price']"):
item = items.select_one("h2 a").text
print(item)
def get_paginated_info(url):
r = requests.get(url)
sauce = BeautifulSoup(r.text,"lxml")
print("================links with pagination==============")
for content in sauce.select("td[class='table-row-price']"):
title = content.select_one("h2 a").text
print(title)
if __name__ == '__main__':
for url in urls:
get_names(url)
Любаябудет высоко оценен лучший дизайн, способный справляться с разными взглядами.