我現在要多線程抓取一個網站內容,假設這個網站內容有105頁,但是由於機器限制只能開啟十個線程抓取,那麼我如何做到第一個線程負責抓1-10頁,第二個線程11-20頁以此類推,直到最後第十個線程負責抓取91-105頁,這個思路該怎麼寫成python程式碼啊?
我現在要多線程抓取一個網站內容,假設這個網站內容有105頁,但是由於機器限制只能開啟十個線程抓取,那麼我如何做到第一個線程負責抓1-10頁,第二個線程11-20頁以此類推,直到最後第十個線程負責抓取91-105頁,這個思路該怎麼寫成python程式碼啊?
python3
<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>