2016-11-16 1 views
0

630,220 개의 URL을 열어서 긁어 내야합니다. 이 URL 자체는 긁어 모아져서 각 긁힌 페이지가 약 3,500 개의 URL을 반환하기 때문에 훨씬 쉽게 긁어 모았습니다.Python에서 많은 수의 URL을 긁음

이 630,220 개의 URL을 다듬기 위해 현재 스레드를 사용하여 파이썬에서 병렬 스크래핑을하고 있습니다. 16 개의 스레드를 사용하면 200 개의 URL을 다듬는 데 51 초가 걸립니다. 따라서,이 문제를 처리하는 데 불필요하게 시간이 많이 걸리고 비효율적 인 것으로 보이는 630,220 개의 URL을 모두 다 고치는 데 44 시간이 걸릴 것입니다.

서버에 과부하가 발생하지 않는다고 가정 할 때 초당 1000 건의 요청을 비동기식으로 보낼 수있는 방법이 있습니까? 그러면 약 10 분 정도가 소요될 수 있습니다. 이는 상당히 합리적입니다.

+0

[asyncio] (https://docs.python.org/3/library/asyncio.html)에 관심이있을 수 있습니다. –

+1

[Scrapy] (https://scrapy.org/)는 이미 비동기식이며, 가까운 장래에 핸드 롤 할 수있는 것보다 훨씬 강력하고 제작 준비가 완료되었습니다. 단일 [벤치 마크] (https://doc.scrapy.org/en/latest/topics/benchmarking.html)에서 통찰력을 얻을 수 있습니다. –

답변

0

gevent을 사용하십시오. 파이썬 표준 라이브러리의 원숭이 패치를 가능하게하고, 좋아하는 스크래핑 라이브러리를 사용하십시오. 똑같은 일을하는 1000 개의 그린렛으로 스레드를 대체하십시오. 그리고 너 끝났어.