您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關python中怎么利用多線程實現一個網絡爬蟲,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
#!_*_coding:utf-8- -*- #! @time :2021/4/4 7:58 #!name :Vislf import threading,queue import time import requests from bs4 import BeautifulSoup from tqdm import tqdm #文本寫入線程 def write_txt(url_list,Q): print('啟動了') f=open(book_name,'w',encoding='utf-8') f.close() # 開始寫入 for i in tqdm(range(len(url_list))): va=Q.get() url_list[va[-1]].append(va[:-1]) f=open(book_name,'a',encoding='utf-8') print('打開文本開始寫入') print('開始寫入文本') for i in tqdm(range(len(url_list))): f.write(url_list[i][1]) f.write('\n') f.write('\n') f.write('\n') f.write('\n'.join(url_list[i][-1])) f.write('\n') f.write('\n') f.write('\n') f.flush() #網頁下載,解析線程 def get_txt(n,q): req = requests.get(url=n[0]) req.encoding = 'utf-8' html = req.text bf = BeautifulSoup(html, 'lxml') texts = bf.find('div', id='content') content = texts.text.strip().split('\xa0' * 4) content.append(n[2]) q.put(content,1) #主線程 def main(): print('程序啟動:') q=queue.Queue(2048) threads=[] url_list_data=[] ks_time=time.time() #獲取小說章節信息 req = requests.get(url=target) req.encoding = 'utf-8' html = req.text chapter_bs = BeautifulSoup(html, 'lxml') chapters = chapter_bs.find('div', id='list') chapters = chapters.find_all('a') #得到url列表,標號列表 for i in range(len(chapters)): data0 = server + chapters[i].get('href') data1 = chapters[i].string data2 = i url_list_data.append([]) url_list_data[i].append(data0) url_list_data[i].append(data1) url_list_data[i].append(data2) #網頁線程啟動 for i in tqdm(range(len(url_list_data))): t=threading.Thread(target=get_txt,args=(url_list_data[i],q)) threads.append(t) threads[i].start() t=threading.Thread(target=write_txt,args=(url_list_data,q)) t.start() for i in range(len(url_list_data)-500): threads[i].join() t.join() print('python 程序結束的地方-') sj=time.time()-ks_time print(sj) if __name__=="__main__": server = 'https://www.xsbiquge.com' book_name = '詭秘之主.txt' target = 'https://www.xsbiquge.com/15_15338/' main() exit()
看完上述內容,你們對python中怎么利用多線程實現一個網絡爬蟲有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。