0

.aspx 웹 페이지에서 정보를 크롤링하기 위해 스크랩 코드 작업 중입니다. 데이터베이스의 모든 레코드를 검색하려고하지만 레코드 색인 목록이 없습니다. 인덱스는 1에서 9000000 사이의 정수라는 것을 알고 있습니다. 따라서 for 루프를 사용하여 인덱스에 무차별 대입을 사용하려고합니다.for 루프에서 다중 인수를 사용하여 다중 처리하는 방법

각 레코드에서 특정 정보를 검색하려고합니다. 그래서 beautifulsoup와 pandas.DataFrame을 사용하여 원하는 정보를 저장했습니다. 그런 다음 데이터 프레임을 추가하여 레코드를 수집합니다. 예를 들어

:

df_all = pandas.DataFrame(col= ['A', 'B', 'C']) 
# id: Unique id of each record; df_all: the dataframe that stores the records 
def func(id, df_all): 
    """ 
    Use beautifulsoup to collect the info from the webpage 
    """ 
    df_temp = pd.DataFrame([1,2,3], col= ['A', 'B', 'C']) 
    df_all = df_all.append(df_temp, ignore_index= True) 
    return df_all 

내가 루프가 동시에 FUNC 기능을 수행하는 여러 가지 사용하여 생각 해요. 예를 들어, 1 차 클라이언트는 1에서 22500000까지 수행합니다. 두 번째 클라이언트는 22500001에서 4500000까지 수행합니다. 기타 등등. 그런 다음 각 클라이언트의 결과를 결합 할 수 있습니다. ipyparallel, multiprocessing.pool 및 joblib를 사용하려고했습니다. 그러나 필자의 함수 구조가 병렬 처리에 맞지 않는 것처럼 보였다. 병렬 for 루프 작업을 수행하기 위해 구조를 어떻게 수정해야합니까? 아니면 데이터베이스에서 데이터를 가져 오는 더 좋은 방법이 있습니까? 데이터베이스에는 약 29k + 레코드가 있습니다. 1에서 90000000까지의 인덱스에 무차별 대입을 사용하는 것은 실제로이 문제에 접근하는 최선의 방법이 아닙니다.

+0

자세한 사항을 참조하십시오. 사이트를 소유하고 있습니까, 아니면 다른 사람입니까? 다른 사람의 경우 데이터베이스에 어떻게 연결하고 있습니까? 왜 색인이 필요합니까? BeautifulSoup을 어디에서 호출하고 있으며 어떤 객체가 반환됩니까? 기록은 어떻게 생겼습니까? Pandas 데이터 프레임에 레코드를 저장하는 목표가 있습니까? – ddg

+0

레코드의 정보를 호출하는 가장 쉬운 방법은 해당 ID를 사용하는 것입니다. 각각의 레코드가 자체 웹 페이지를 가지고 있기 때문에 나는 함수 안에서 아름다운 수프를 불렀다. 링크는 https://propaccess.trueautomation.com/clientdb/Property.aspx?prop_id=12345와 같습니다. 하지만 링크 (https://propaccess.trueautomation.com/clientdb/?cid=39)에서 쿠키를 가져와야합니다. 그런 다음 id 번호를 대체하여 각 페이지에 연결합니다. – whh1294

답변

0

괜찮은 종류의 더러운 솔루션이지만, 제대로 작동한다고 생각합니다.

은 사전 매핑 되세요

  • 모든 저장 검색 페이지에서 '소유자 이름'검색을 실행 : {owner name : process_id} 알파벳의 각 문자에 대한

    를, 당신의 프로그램이 사전에 process_ids을 입력하십시오.

  • 모든 페이지가 저장 될 때까지 반복하십시오.

검색을 실행하고 다음 페이지로 이동하려면 http POST를 보내십시오. 개발자 도구를 열고 단추를 클릭 한 다음 브라우저에서 보낸 내용을보고 Python에서 같은 것을 보내십시오.

일단 모든 process_ids을 얻으면 사전을 반복하고 각 레코드 페이지에 액세스 할 수 있습니다.

+0

request.post를 사용하려고했습니다. 그러나 웹 페이지가 양식 데이터를 사용하여 서버를 요청한 것처럼 보였습니다. html 코드를 살펴본 결과 일부 쿠키에 의해 구동된다는 것을 알았습니다. request.post를 사용하는 방법에 대해 설명해 주시겠습니까? – whh1294

관련 문제