Я написал скребок в python, используя библиотеку BeautifulSoup, чтобы проанализировать все имена, пересекающие разные страницы веб-сайта. Я мог бы управлять им, если бы это было не более одного URL-адреса с разной разбивкой на страницы, что означает, что некоторые URL-адреса имеют разбивку на страницы, а некоторые не так, как содержание мало.
Мой вопрос: как я могу скомпилировать их внутри функции для обработки, имеют ли они разбиение на страницы или нет?
Моя первоначальная попытка (он может анализировать содержимое только с первой страницы URL-адреса):
import requests
from bs4 import BeautifulSoup
urls = {
'https://www.mobilehome.net/mobile-home-park-directory/maine/all',
'https://www.mobilehome.net/mobile-home-park-directory/rhode-island/all',
'https://www.mobilehome.net/mobile-home-park-directory/new-hampshire/all',
'https://www.mobilehome.net/mobile-home-park-directory/vermont/all'
}
def get_names(link):
r = requests.get(link)
soup = BeautifulSoup(r.text,"lxml")
for items in soup.select("td[class='table-row-price']"):
name = items.select_one("h2 a").text
print(name)
if __name__ == '__main__':
for url in urls:
get_names(url)
Я мог бы все это сделать, если есть один URL с разбивкой на страницы, как показано ниже:
from bs4 import BeautifulSoup
import requests
page_no = 0
page_link = "https://www.mobilehome.net/mobile-home-park-directory/new-hampshire/all/page/{}"
while True:
page_no+=1
res = requests.get(page_link.format(page_no))
soup = BeautifulSoup(res.text,'lxml')
container = soup.select("td[class='table-row-price']")
if len(container)<=1:break
for content in container:
title = content.select_one("h2 a").text
print(title)
Но все URL-адреса не имеют разбивки на страницы. Итак, как я могу уловить все из них, есть ли какая-либо разбивка на страницы или нет?