2016-07-14 2 views
-2

나는 다음 페이지의 결과를 얻을 수있는 스크레이퍼를 작성하는 것을 시도하고있다 :아름다운 스프를 사용하여 여러 페이지의 검색 결과를 웹 스 크레이져가 통과하도록하려면 어떻게해야합니까?

https://www.co.dutchess.ny.us/CountyClerkDocumentSearch/Search.aspx?q=nco1%253d2%2526name1%253da&page=1

내가 모든 결과뿐만 아니라 "A"결과를 얻기 위해 노력하고 있어요,하지만 난 하나 개의 문자로 시작할 수 생각 그리고 나서 전체 알파벳을 따라 가라. 누군가가이 부분에 도움을 줄 수 있다면 큰 도움이 될 것입니다.

어쨌든 모든 파티 이름, 즉 속성 클래스 party-name이있는 요소에 대해 제로에 넣고 싶습니다.

from urllib.request import urlopen 
from bs4 import BeautifulSoup 
html = urlopen("https://www.co.dutchess.ny.us/CountyClerkDocumentSearch/Search.aspx?q=nco1%253d2%2526name1%253da&page=1") 
bsObj = BeautifulSoup(html) 
nameList = bsObj.findAll("td", {"class":"party-name"}) 
for name in nameList: 
print(name.get_text()) 

그러나,이 한 페이지 만 작동 :

나는 다음과 같은 코드가 있습니다. 결과는 여러 페이지에 걸쳐 있습니다. 여러 페이지에 대해 어떻게 이것을 수행 할 수 있습니까?

또한 A가 아닌 모든 결과를 얻는 데 도움을 줄 수 있으면 좋을 것입니다.

수정 지금 내 코드가 개선되었으며 모든 검색을 수행 할 수 있습니다. 그러나 나는 여전히 다음 페이지로 갈 수 없다. 내가 page_number + +를 사용하여 노력했지만 페이지 결과의 숫자가 다양하기 때문에 어디에서 멈출 지 모릅니다. 어떻게하면 마지막 페이지에서 다음 페이지 나누기로 갈 수 있습니까 ???

새로운 코드 :

from urllib.request import urlopen 
from bs4 import BeautifulSoup 

all_letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o","p","q","r","s","t","u","v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] 
for letter in all_letters: 

    page_number = 1 
    url = "https://www.co.dutchess.ny.us/CountyClerkDocumentSearch/Search.aspx?q=nco1%253d2%2526name1%253d" + letter + "&page=" + str (page_number) 
    html = urlopen(url) 
    bsObj = BeautifulSoup(html) 
    nameList = bsObj.findAll("td", {"class":"party-name"}) 

    for name in nameList: 
     print(name.get_text()) 
+0

발전기를 사용해 볼 수 있습니다. – Quill

+4

Plase ** 질문을 다시 게시하지 마십시오 ** : [아름다운 수프로 웹 스크래핑을 할 때 여러 결과 페이지를 반복하는 방법] (http : //stackoverflow.com/questions/38407661/how-to-iterate-through-multiple-results-pages-when-web-scraping-with-beautiful-s) –

답변

-1

내가 이런 식으로 해결할 난 당신이 페이지에서 "하므로 starts_with"매개 변수를 변경 ANS를 통해 모든 반복 할 이해하는 바로는 (의사)

for letter in all_letters: 
    page = 1 
    while True: 
     url = letter + page 
     # scrape the page 
     # check with bs if there is an a-element with id "NextLink1" 
     if not link_to_next_page_found: 
      break 
     page += 1 
+0

내 코드를 업데이트했습니다 (위의 업데이트 된 코드 참조). . 나는 당신이 말한대로 지금 나의 URL을 건설하고 있으며 나는 모든 가능한 검색의 목록을 만들 수있다. 그래서 나는 지금 모든 수색을 다루었습니다. 그러나 다음 페이지 부분은 해결할 수 없습니다. 나는 page_number ++로 팅커 달린 적이 있지만 그것은 무한대로 올라가고 멈추지 않을 것입니다. 각 검색 결과에 유효한 페이지로 어떻게 제한합니까? –

0

알파벳들. 질문에 대한 제 이해가 정확하다면 도움이 될 것입니다.

URL을 분석하면 답변을 얻을 수 있습니다. "% 253D"후 = "https://www.co.dutchess.ny.us/CountyClerkDocumentSearch/Search.aspx?q=nco1%253d2%2526name1%253da&page=1"

문자

url은 "하므로 starts_with"용어를 지시한다. 현재이는 'A'는 그러므로 그것은 '는'당신이 반복하려는 경우 단지 중 어떤 캐릭터가 될 수있는 URL

url = 'https://www.co.dutchess.ny.us/CountyClerkDocumentSearch/Search.aspx?q=nco1%253d2%2526name1%253d' + starts_with + '&page=1'

starts_with을 변경 (A, B, C로 시작하여 반환 ...) 또는 문자열 (abc, asde, ...)

+0

내 코드를 업데이트했습니다 (위의 업데이트 된 코드 참조). 나는 당신이 말한대로 지금 나의 URL을 건설하고 있으며 나는 모든 가능한 검색의 목록을 만들 수있다. 그래서 나는 지금 모든 수색을 다루었습니다.그러나 다음 페이지 부분은 해결할 수 없습니다. 나는 page_number ++로 팅커 달린 적이 있지만 그것은 무한대로 올라가고 멈추지 않을 것입니다. 각 검색 결과에 유효한 페이지로 어떻게 제한합니까? –

관련 문제