문제

따라서 페이지를 구문 분석하기 위해 BeautifulSoup을 사용하고 있으며 코드는 쿼리에 최소 7 페이지가 있음을 알 수 있습니다.

페이지 매김이 보입니다

 1 2 3 4 5 6 7 Next

내가 7로 끝까지 페이지를 찍으면 때로는 7 페이지가 넘는 페이지가 있으므로 7 페이지에 있으면 페이지 매김이

 1 2 3    7 8 9 10 Next

그래서 지금, 나는 최소 3 페이지가 더 있다는 것을 알고 있습니다. 초기 패스를 사용하여 몇 페이지를 파악하고 있습니다.

내가하고있는 일은 각 페이지의 항목을 반복하는 것입니다.

for page in range(1,num_pages + 1):
  # do some stuff here

스크립트가 7 페이지 이상인 경우 범위를 동적으로 업데이트하는 방법이 있습니까? 또 다른 접근법은 카운트를 유지하는 것이며 7 페이지에 도달하면 별도로 처리하는 것입니다. 나는 이것에 접근하는 가장 좋은 방법을위한 제안과 솔루션을 찾고 있습니다.

도움이 되었습니까?

해결책

아마도 종료시기를 결정하는 변이 가능한 상태를 갖는 발전기를 만들 수있을 것입니다 ... 그러나 이와 같은 단순한 것은 어떻습니까?

page = 1
while page < num_pages + 1:
    # do stuff that possibly updates num_pages here
    page += 1

다른 팁

코드 무료 답변은 다음과 같습니다. 그러나 아름다운 수프가 할 수있는 일을 활용하면 간단하다고 생각합니다.

우선, 첫 페이지에는 페이지 번호 및 링크가 있습니다. 당신의 질문에서 그들은 다음과 같이 보입니다.

1 2 3 4 5 6 7 [next]

다른 사이트는 페이징을 다르게 처리하고 일부는 시작/끝으로 점프 할 수있는 링크를 제공하지만 처음 7 페이지 이후에 다음과 같이 보입니다.

1 2 3 ... 7 8 9 10 [next]

자, 어느 시점에서, 당신은 끝까지 도착할 것입니다. 그것은 다음과 같이 보일 것입니다.

1 2 3 ... 20 21 22 23

다음] 링크가 없습니다.

따라서 발전기와 범위를 잊고 중간 범위 등을 추적합니다.

  1. 아름다운 수프를 사용하여 다음 버튼과 함께 주어진 페이지의 페이지 # 링크를 식별하십시오.
  2. 다음] 링크를 볼 때마다 팔로우하고 아름다운 수프로 다시 채워
  3. 다음 링크가없는 페이지를 누르면 마지막 # 페이지 링크는 총 페이지 수입니다.

나는 존을 좋아한다 while-기반 솔루션이지만 사용합니다 for 당신은 다음과 같은 일을 할 수 있습니다.

pages = range(1, num_pages+1)
for p in pages:
   ...possibly pages.extend(range(something, something)) here...

즉, 루핑하는 범위에 이름을 제시해야하므로 필요할 때 확장 할 수 있습니다. 반복하는 컨테이너를 교체하는 것은 일반적으로 눈살을 찌푸 리지만,이 구체적이고 구속 된이 경우에는 실제로 유용한 관용구가 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top