python爬蟲多執行緒程式設計

2022-02-22 05:08:05 字數 1640 閱讀 5003

#使用了執行緒庫

import threading

from queue import queue

from bs4 import beautifulsoup

import json

import requests

class threadcrawl(threading.thread):

def __init__(self,threadnmae,pagequeue,dataqueue):

#threading.thread.__init__(self)

#多個父類的話下面這個方便

super(threadcrawl,self).__init__( )

self.threadnmae=threadnmae

self.pagequeue=pagequeue

self.dataqueue=dataqueue

self.headers={

def run(self):

print("啟動"+self.threadnmae)

while not crawl_exit:

try:

#取出乙個數字,先進先出

#1可選引數block預設值是true,不會結束,會進入阻塞狀態,直到佇列有新的資料

#2.如果隊列為空,block為flase的話,就會彈出乙個queue.empty()異常

page=self.pagequeue.get(false)

url=""+str(page)+"/"

content=requests.get(url,headers=self.headers)

self.dataqueue.put(content)

except:

pass

print("結束"+self.threadnmae)

crawl_exit=false

parse_exit=false

def main():

#頁面的佇列可以儲存10頁

pagequeue=queue(10)

#放入1-10 先進先出

for i in range(1,11):

pagequeue.put(i)

#採集結果的資料佇列,引數為空

dataqueue=queue()

#儲存三個執行緒採集的名字

crawlist=["採集執行緒1號","採集執行緒2號","採集執行緒3號"]

#儲存三個採集執行緒

threadcrawl=

for threadnmae in crawlist:

thread=threadcrawl(threadnmae,pagequeue,dataqueue)

thread.start()

while not pagequeue.empty():

pass

global crawl_exit

crawl_exit=true

print("queue為空")

for thread in threadcrawl:

thread.join()

print("joining...............")

if __name__=="__main__":

main()

python爬蟲 多執行緒爬蟲

在進行爬蟲工作的時候,考慮到爬蟲執行的速度慢,那麼怎樣提公升爬蟲的速度呢,那麼就得使用多執行緒爬蟲了,接下來我以糗事百科段子的爬取進行對多執行緒爬蟲的概述 github鏈結 鏈結一 不使用多執行緒爬取糗事百科 1.上 import urllib.request import re headers f...

python多執行緒爬蟲

先記錄一下,普通的糗事百科爬蟲 import urllib.request import re import time import urllib.error headers user agent mozilla 5.0 windows nt 10.0 win64 x64 rv 63.0 gecko...

python多執行緒爬蟲

python多執行緒爬蟲 python單執行緒爬蟲對於應付小規模資料是可以的,但是面對大量資料,我們就要用到多執行緒爬蟲技術。使用多執行緒,一方面可能會加快效率,另一方面可以施加一些小技巧,如不同的執行緒使用不同的 ip從而避免出發反爬機制。python 多執行緒 python的多執行緒可以用thr...