Pythonマルチスレッド爬虫類の初探査-豆弁図書top 250を這い出す

9618 ワード

Pythonマルチスレッド爬虫類の初探査-豆弁図書top 250を這い出す
最近python爬虫類に関する知識を独学で学び、pythonのurllibライブラリを使ってネット爬虫類を作る方法を学びました.そして最近マルチスレッド爬虫類を見て、自分も小さな爬虫類を書いてマルチスレッド爬虫類を試して、豆弁図書top 250を登りました(これは初心者が一番よく登るのではないでしょうか2333).
まずマルチスレッドの簡単な理解は、1つのプロセスで複数のタスクを同時に実行することであり、プログラムの実行速度を速める機能を達成することができる.
コードセクションは次のとおりです.
まず、使用するモジュールをいくつかインポートします.
import re                 
import urllib.request     
import queue
import threading
import time

次に、モジュールqueueのQueueメソッドを使用してキューを定義します(先進的な前提条件に従うデータ構造).
htmls=queue.Queue()

その後、スレッド1を定義する-Webページのhtmlソースコードを抽出し、「utf-8」符号化形式の文字列に変換する
class crawhtml(threading.Thread):
    def __init__(self,htmls):           #    Thread    
        threading.Thread.__init__(self)
        self.htmls=htmls
    def run(self):                     #          
        for i in range(10):
            url='https://book.douban.com/top250?start='+str(i*25) #     url
            html=urllib.request.urlopen(url).read().decode('utf-8')  #          utf-8(        )
            self.htmls.put(html)   #             
            self.htmls.task_done() #         

スレッド2-正規表現を使用して、Webページに必要なコンテンツ(図書の名前)を一致させ、抽出してファイルに書き込みます.
class selectword(threading.Thread):
    def __init__(self,htmls):
        threading.Thread.__init__(self)
        self.htmls=htmls
    def run(self):
        rank=1                #     
        for i in range(10):    
            htmltxt=self.htmls.get()    #            
            htmltxt=htmltxt.replace('
'
,'').replace('\t','').replace(' ','') print(htmltxt) keyword='"title="(.+?)">' # word=re.compile(keyword).findall(htmltxt) # fh=open(r'C:\Users\89520\Desktop\craw.txt','a') # r for i in range(25): # craw.txt fh.write(str(rank)+'.'+word[i]+'
'
) rank=rank+1

最後にメイン関数
if __name__=='__main__':   
    craw=crawhtml(htmls)
    craw.start()
    select=selectword(htmls)
    select.start()

これで簡単なマルチスレッド爬虫類が完成しました.
最初のブログはどうして書くことができますか.そうしましょう.その後、毎週少なくとも1編を計画します.