안녕하세요 여러분, 저는 초보자이며 웹 스크래핑에서 URL 링크가있는 IF ELSE 함수를 사용하려고합니다. 부서 64에서 66까지의 모든 페이지를 선택하고 싶습니다. 내 URL은 http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/{}/0 ({} = 64 또는 65 또는 66)입니다. 내 루프가 작동하고 64 페이지를 모두 선택합니다.하지만 65 세 안에있을 때 페이지가 하나 뿐이므로 코드 줄 last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
을 사용할 수 없습니다.단 하나의 페이지에서 오류를 피하는 방법 URL- 파이썬 - 웹 스크 레이 핑
import requests
from bs4 import BeautifulSoup
url_list = ['http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/{}/0']
for link in url_list:
r=requests.get(link)
soup = BeautifulSoup(r.content, "html.parser")
page_Url_test=[link.format(i) for i in range(64, 66)]
for depart_page in page_Url_test:
depart_page1=str(depart_page)+"?page={}"
r=requests.get(depart_page1)
soup = BeautifulSoup(r.content, "html.parser")
last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
dept_page_Url=[depart_page1.format(i) for i in range(0, int(last_page)+1)]
print(dept_page_Url)
이 같은 ELSE는 IF를 통합하는 시도 :
for depart_page in page_Url_test:
depart_page1=str(depart_page)+"?page={}"
r=requests.get(depart_page1)
soup = BeautifulSoup(r.content, "html.parser")
if len(depart_page1) == 0 :
dept_page_Url=depart_page1
else:
last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
dept_page_Url=[depart_page1.format(i) for i in range(0, int(last_page)+1)]
print(dept_page_Url)
을하지만 그것은 작동하지 않습니다 내 코드를 여기에. 내 코드에 어떻게 대처할 수 있습니까? 하나의 페이지 만 있으면 첫 번째 페이지 만 선택하고 다음 단계는 수행합니까? 실마리가 있습니까? 혼자 찾을 수있는 충분한 지식이없는 ... 당신에게 이미 지적 선생님 t.m.adam으로 많은
65 페이지 더 .pagination 요소가 없다, 그래서 당신의 조건'이 될 경우 soup.find (class_ = '한다 페이지 매김 ') :' –