2019 4 9 Python學習總結

2021-09-17 18:25:52 字數 2700 閱讀 5489

所謂多執行緒,即程式中的某些程式段並行執行,合理地設定多執行緒 ,可使爬蟲效率更高。

例:普通的糗事百科段子爬蟲

import urllib.request

import re

import urllib.error

opener=urllib.request.build_opener()

opener.addheaders=[headers]

urllib.request.install_opener(opener)

for i in range(1,3):

url=""+str(i)

pagedata=urllib.request.urlopen(url).read().decode("utf-8","ignore")

pat='.*?(.*?).*?

' datalist=re.compile(pat,re.s).findall(pagedata)

for j in range(0,len(datalist)):

print("第"+str(i)+"頁第"+str(j)+"個段子內容是:")

print(datalist[j])

建立執行緒的基本格式:

import threading

class a(threading.thread):

def __init__(self):

threading.thread.__init__(self)

def run(self):

for i in range(0,10):

print("我是執行緒a")

class b(threading.thread):

def __init__(self):

threading.thread.__init__(self)

def run(self):

for i in range(0,10):

print("我是執行緒b")

例:將糗事百科爬蟲改為多執行緒爬蟲

import urllib.request

import threading

import re

import urllib.error

opener=urllib.request.build_opener()

opener.addheaders=[headers]

urllib.request.install_opener(opener)

class one(threading.thread):

def __init__(self):

threading.thread.__init__(self)

def run(self):

for i in range(1,10,2):

url=""+str(i)

pagedata=urllib.request.urlopen(url).read().decode("utf-8","ignore")

pat='.*?(.*?).*?

' datalist=re.compile(pat,re.s).findall(pagedata)

for j in range(0,len(datalist)):

try:

print("第"+str(i)+"頁第"+str(j)+"個段子內容是:")

print(datalist[j])

except urllib.error.urlerror as e:

if hasattr(e,"code"):

print(e.code)

if hasattr(e,"reason"):

print(e.reason)

except exception as e:

print(e)

class two(threading.thread):

def __init__(self):

threading.thread.__init__(self)

def run(self):

for i in range(2,11,2):

url=""+str(i)

pagedata=urllib.request.urlopen(url).read().decode("utf-8","ignore")

pat='.*?(.*?).*?

' datalist=re.compile(pat,re.s).findall(pagedata)

for j in range(0,len(datalist)):

print("第"+str(i)+"頁第"+str(j)+"個段子內容是:")

使用多執行緒可交叉執行,比單執行緒執行時間短,速度更快

python的異常學習簡總

python中常見的異常型別 nameerror 嘗試訪問乙個為申明的變數。zerodivisionerror 除數為零錯誤。syntaxerror 直譯器語法錯誤,這是乙個唯一不在執行時發生的異常,在執行前直譯器就會顯示其錯誤。indexerror 請求的索引超出範圍。keyerror 請求乙個不...

Xamarin for android學習總結一

1.adapter就是資料讀入記憶體後的 記憶體中介 2.intend,broadcast,server,provider,activity,執行關係圖 3.toast用於向使用者顯示一些幫助 提示 c 中toast是由其他執行緒呼叫更新ui主線程之用 4.android中ui執行緒與後台執行緒互動...

SOPC Builder Nios學習經驗總結

上的不一致。3.在nois ii中bulid例程hello world都出現了錯誤,錯誤提示為 gdrive c altera kits nios2 components altera nios2 hal src alt busy sleep.c 68 error parse error befor...