时间:2021-07-01 10:21:17 帮助过:5人阅读
我现在要多线程抓取一个网站内容,假设这个网站内容有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>