多執行緒爬蟲:即程式中的某些程式段並行執行,
合理地設定多執行緒,可以讓爬蟲效率更高
糗事百科段子普通爬蟲和多執行緒爬蟲
分析該**鏈結得出:
頁碼/多執行緒爬蟲也就和j**a的多執行緒差不多,直接上**
'''#此處**為普通爬蟲
import urllib.request
import 程式設計客棧urllib.error
import re
headers = ("user-agent","m (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/55.0.2883.87 safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
for i in range(1,2):
url = ""+str(i)+"/"
pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
pattern = 程式設計客棧'.*?(.*?)(.*?)
' datalist = re.compile(pattern,re.s).findal程式設計客棧l(pagedata)
for j in range(0,len(datalist)):
print("第"+str(i)+"頁第"+str(j)+"個段子內容是:")
print(datalist[j])
''''''
#此處為多執行緒介紹**
import threading #匯入多執行緒包
class a(threading.thread): #建立乙個多執行緒a
def __init__(self): #必須包含的兩個方法之一:初始化執行緒
threading.thread.__init__(self)
def run(self): #必須包含的兩個方法之一:執行緒執行方法
for i in range(0,11):
print("我是執行緒a")
class b(threading.thread): #建立乙個多執行緒a
def __init__(self): #必須包含的兩個方法之一:初始化執行緒
threading.thread.__init__(self)
def run(self): #必須包含的兩個方法之一:執行緒執行方法
for i in range(0,11):
print("我是執行緒b")
t1 = a() #執行緒例項化
t1.start() #執行緒執行
t2 = b()
t2.start()
'''#此處為修改後的多執行緒爬蟲
#使用多執行緒進行奇偶頁的爬取
import urllib.request
import urllib.error
import re
import threading
headers = ("user-agent","mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/55.0.2883.87 safari/537.36")
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,12,2):
url = ""+str(i)+"/"
pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
pattern = '.*程式設計客棧?(.*?)(.*?)
' datalist = re.compile(pattern,re.s).findall(pagedata)
for j in range(0,len(datalist)):
print("第"+str(i)+"頁第"+str(j)+"段子內容為:")
print(datalist[j])
class two(threading.thread): #爬取奇數頁內容
def __init__(self):
threading.thread.__init__(self)
def run(self):
for i in range(2,12,2):
url = ""+str(i)+"/"
pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
pattern = '.*?(.*?)(.*?)
' datalist = re.compile(pattern,re.s).findall(pagedata)
for j in range(0,len(datalist)):
print("第"+str(i)+"頁第"+str(j)+"段子內容為:")
print(datalist[j])
t1 = one()
t2 = two()
t1.start()
t2.start()
本文標題: python多執行緒爬蟲實戰_爬取糗事百科段子的例項
本文位址:
Python實戰爬蟲 爬取段子
不管三七二十一我們先導入模組 段子所在的 import re import requests 如果沒這模組執行cmd pip install requests領域 web開發,爬蟲,資料分析,資料探勘,人工智慧 零基礎到專案實戰,7天學習上手做專案 獲取 的內容 段子所在的 import re im...
python爬蟲例項之 多執行緒爬取小說
之前寫過一篇爬取 的部落格,但是單執行緒爬取速度太慢了,之前爬取一部 花了700多秒,1秒兩章的速度有點讓人難以接受。所以弄了個多執行緒的爬蟲。這次的思路和之前的不一樣,之前是一章一章的爬,每爬一章就寫入一章的內容。這次我新增加了乙個字典用於存放每章爬取完的內容,最後當每個執行緒都爬取完之後,再將所...
Python爬蟲爬取高畫質桌布 多執行緒2
在這裡附上執行的結果圖 列表用來存放所有的url q queue.queue headers defdownload while true 判斷執行緒1是否存活 ifnot t1.is alive 判斷佇列是否為空 if q.empty break url,name,i q.get path dow...