Python多執行緒爬蟲實戰 爬取糗事百科段子的例項

2022-10-04 20:36:19 字數 2935 閱讀 5546

多執行緒爬蟲:即程式中的某些程式段並行執行,

合理地設定多執行緒,可以讓爬蟲效率更高

糗事百科段子普通爬蟲和多執行緒爬蟲

分析該**鏈結得出:

頁碼/多執行緒爬蟲也就和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...