이제 여러 스레드가 있는 웹 사이트 콘텐츠를 크롤링하려고 합니다. 웹 사이트 콘텐츠에 105개의 페이지가 있지만 시스템 제한으로 인해 크롤링을 위해 10개의 스레드만 활성화할 수 있다고 가정합니다. 그러면 첫 번째 스레드가 크롤링을 담당하도록 하려면 어떻게 해야 할까요? 1-10페이지? , 두 번째 스레드는 11-20페이지를 다루고, 10번째 스레드는 91-105페이지를 담당할 때까지 이 아이디어를 Python 코드로 어떻게 작성해야 합니까?
이제 여러 스레드가 있는 웹 사이트 콘텐츠를 크롤링하려고 합니다. 웹 사이트 콘텐츠에 105개의 페이지가 있지만 시스템 제한으로 인해 크롤링을 위해 10개의 스레드만 활성화할 수 있다고 가정합니다. 그러면 첫 번째 스레드가 크롤링을 담당하도록 하려면 어떻게 해야 할까요? 1-10페이지? , 두 번째 스레드는 11-20페이지를 다루고, 10번째 스레드는 91-105페이지를 담당할 때까지 이 아이디어를 Python 코드로 어떻게 작성해야 합니까?
파이썬3
<code class="python"> import urllib import queue import threading def download(queue,lck): """ 工作者,当队列中没有任务的时候就执行退出。 """ while not queue.empty(): pg = queue.get() #在此写 抓取网页的代码 #然后把抓到的内容写入文件 lck.acquire() print ('第 %d 页已完成'%pg) lck.release() queue.task_done() def main(): """ 主线程, """ print ('开始下载……') lck = threading.Lock() q = queue.Queue() for pg in range(1,106): #网站内容有105页 q.put(pg) for i in range(10):#十个线程 t = threading.Thread(target=download, args=(q,lck)) t.start() q.join() # 等待所以任务完成 print ('结束') if __name__ == '__main__': main() </code>