Pythonマルチスレッド爬虫類の初探査-豆弁図書top 250を這い出す
9618 ワード
Pythonマルチスレッド爬虫類の初探査-豆弁図書top 250を這い出す
最近python爬虫類に関する知識を独学で学び、pythonのurllibライブラリを使ってネット爬虫類を作る方法を学びました.そして最近マルチスレッド爬虫類を見て、自分も小さな爬虫類を書いてマルチスレッド爬虫類を試して、豆弁図書top 250を登りました(これは初心者が一番よく登るのではないでしょうか2333).
まずマルチスレッドの簡単な理解は、1つのプロセスで複数のタスクを同時に実行することであり、プログラムの実行速度を速める機能を達成することができる.
コードセクションは次のとおりです.
まず、使用するモジュールをいくつかインポートします.
次に、モジュールqueueのQueueメソッドを使用してキューを定義します(先進的な前提条件に従うデータ構造).
その後、スレッド1を定義する-Webページのhtmlソースコードを抽出し、「utf-8」符号化形式の文字列に変換する
スレッド2-正規表現を使用して、Webページに必要なコンテンツ(図書の名前)を一致させ、抽出してファイルに書き込みます.
最後にメイン関数
これで簡単なマルチスレッド爬虫類が完成しました.
最初のブログはどうして書くことができますか.そうしましょう.その後、毎週少なくとも1編を計画します.
最近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編を計画します.