日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python如何使用隊列方式實現多線程爬蟲

瀏覽:207日期:2022-07-25 17:25:23

說明:糗事百科段子的爬取,采用了隊列和多線程的方式,其中關鍵點是Queue.task_done()、Queue.join(),保證了線程的有序進行。

代碼如下

import requestsfrom lxml import etreeimport jsonfrom queue import Queueimport threadingclass Qsbk(object): def __init__(self): self.headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36', 'Referer': 'https://www.qiushibaike.com/' } # 實例化三個隊列,用來存放內容 self.url_queue = Queue() self.html_queue = Queue() self.content_queue = Queue() def get_total_url(self): ''' 獲取了所有的頁面url,并且返回url_list return:url_list 現在放入url_queue隊列中保存 ''' url_temp = 'https://www.qiushibaike.com/text/page/{}/' url_list = list() for i in range(1,13): # url_list.append(url_temp.format(i)) # 將生成的url放入url_queue隊列 self.url_queue.put(url_temp.format(i)) def parse_url(self): ''' 發送請求,獲取響應,同時etree處理html ''' while self.url_queue.not_empty: # 判斷非空,為空時結束循環 # 從隊列中取出一個url url = self.url_queue.get() print('parsing url:',url) # 發送請求 response = requests.get(url,headers=self.headers,timeout=10) # 獲取html字符串 html = response.content.decode() # 獲取element類型的html html = etree.HTML(html) # 將生成的element對象放入html_queue隊列 self.html_queue.put(html) # Queue.task_done() 在完成一項工作之后,Queue.task_done()函數向任務已經完成的隊列發送一個信號 self.url_queue.task_done() def get_content(self): ''' 解析網頁內容,獲取想要的信息 ''' while self.html_queue.not_empty: items = list() html = self.html_queue.get() total_div = html.xpath('//div[@class=’col1 old-style-col1’]/div') for i in total_div:author_img = i.xpath('.//a[@rel=’nofollow’]/img/@src')author_img = 'https'+author_img[0] if len(author_img)>0 else Noneauthor_name = i.xpath('.//a[@rel=’nofollow’]/img/@alt')author_name = author_name[0] if len(author_name)>0 else Noneauthor_href = i.xpath('./a/@href')author_+author_href[0] if len(author_href)>0 else Noneauthor_gender = i.xpath('./div[1]/div/@class')author_gender = author_gender[0].split(' ')[-1].replace('Icon','').strip() if len(author_gender)>0 else Noneauthor_age = i.xpath('./div[1]/div/text()')author_age = author_age[0] if len(author_age)>0 else Nonecontent = i.xpath('./a/div/span/text()')content = content[0].strip() if len(content)>0 else Nonecontent_vote = i.xpath('./div[@class=’stats’]/span[@class=’stats-vote’]/i/text()')content_vote = content_vote[0] if len(content_vote)>0 else Nonecontent_comment_numbers = i.xpath('./div[@class=’stats’]/span[@class=’stats-comments’]/a/i/text()')content_comment_numbers = content_comment_numbers[0] if len(content_comment_numbers)>0 else Noneitem = { 'author_name':author_name, 'author_age' :author_age, 'author_gender':author_gender, 'author_img':author_img, 'author_href':author_href, 'content':content, 'content_vote':content_vote, 'content_comment_numbers':content_comment_numbers,}items.append(item) self.content_queue.put(items) # task_done的時候,隊列計數減一 self.html_queue.task_done() def save_items(self): ''' 保存items ''' while self.content_queue.not_empty: items = self.content_queue.get() with open('quishibaike.txt',’a’,encoding=’utf-8’) as f:for i in items: json.dump(i,f,ensure_ascii=False,indent=2) self.content_queue.task_done() def run(self): # 獲取url list thread_list = list() thread_url = threading.Thread(target=self.get_total_url) thread_list.append(thread_url) # 發送網絡請求 for i in range(10): thread_parse = threading.Thread(target=self.parse_url) thread_list.append(thread_parse) # 提取數據 thread_get_content = threading.Thread(target=self.get_content) thread_list.append(thread_get_content) # 保存 thread_save = threading.Thread(target=self.save_items) thread_list.append(thread_save) for t in thread_list: # 為每個進程設置為后臺進程,效果是主進程退出子進程也會退出 t.setDaemon(True) t.start()# 讓主線程等待,所有的隊列為空的時候才能退出 self.url_queue.join() self.html_queue.join() self.content_queue.join()if __name__=='__main__': obj = Qsbk() obj.run()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩三级精品| 国内揄拍国内精品久久| 在线一区av| 国产精品亚洲一区二区三区在线观看| 九九久久国产| 日韩在线视频精品| 国产一区欧美| 日韩免费视频| 亚洲激情中文| 亚洲永久精品唐人导航网址| 日本99精品| 国产一区二区久久久久| 成人日韩在线观看| 亚洲丝袜啪啪| 麻豆精品在线播放| 亚洲二区视频| 日韩区欧美区| 麻豆国产欧美一区二区三区| 国产v综合v| 久久亚洲图片| 国产高清视频一区二区| 色偷偷偷在线视频播放| 久久一区二区三区喷水| 亚洲免费福利一区| а√天堂8资源中文在线| 宅男噜噜噜66国产日韩在线观看| 天堂久久av| 激情国产在线| 在线精品亚洲| 久久久久免费| 婷婷视频一区二区三区| zzzwww在线看片免费| 免费看欧美美女黄的网站| 蜜桃久久久久| 免费一区二区视频| 91精品韩国| 国产三级精品三级在线观看国产| 精品国内亚洲2022精品成人| 不卡中文字幕| 国内自拍视频一区二区三区| 天堂va蜜桃一区二区三区| 高清日韩欧美| 欧美亚洲三区| 在线一区免费观看| 涩涩av在线| 国产精品嫩草影院在线看| 国产精品99一区二区| 麻豆精品视频在线观看视频| 中文精品电影| 午夜免费一区| а√在线中文在线新版| 国产毛片精品| 免费视频一区三区| а√天堂中文在线资源8| 欧美日韩黄网站| 国产一区成人| 日韩精品免费一区二区三区| 国产精品扒开腿做爽爽爽软件| 午夜在线视频一区二区区别| 久久夜夜操妹子| 激情综合五月| 国产美女亚洲精品7777 | 爽好久久久欧美精品| 亚洲伊人av| 美女av一区| 色网在线免费观看| 伊人久久婷婷| 久久久久久自在自线| 日韩在线观看中文字幕| 亚洲第一精品影视| 久久三级中文| 欧美午夜三级| 亚洲欧美日韩专区| 在线一区视频观看| 高清久久精品| 免费在线播放第一区高清av| 日本一区二区三区中文字幕| 在线亚洲观看| 激情欧美国产欧美| 日韩av一级| 日韩欧美一区免费| 久久99高清| 国产精东传媒成人av电影| 日韩高清成人在线| 亚洲影视一区| 香蕉久久夜色精品国产| 91精品一区国产高清在线gif| 精品欧美日韩精品| 久久中文字幕导航| 久久亚洲黄色| 麻豆精品视频在线观看| 欧美黄色精品| 国产精品亚洲综合在线观看| 日韩高清电影免费| 欧美日韩va| 国产精品毛片久久久| 免费观看在线综合| 三级久久三级久久久| 色婷婷成人网| 欧美亚洲人成在线| 国产精品久久久久久模特| 欧美aa在线视频| 成人国产精品一区二区免费麻豆| 免费亚洲一区| 久久电影tv| 91精品国产福利在线观看麻豆| 99精品在线观看| 欧美午夜不卡| 亚洲一区二区三区四区电影| 亚洲a成人v| 国产精品毛片久久久| 欧美亚洲综合视频| 久久一区亚洲| 日韩精品一区二区三区免费观影 | 国产精品麻豆久久| 久久精品免费一区二区三区 | 成人在线免费观看网站| 亚洲播播91| 婷婷综合社区| 蜜桃久久精品一区二区| 欧美亚洲tv| 国产精品qvod| 婷婷激情一区| 日韩精品一卡二卡三卡四卡无卡| 日本久久一区| 蜜臀国产一区| 免费成人在线观看| 欧美激情福利| 亚洲精品一区二区妖精| 婷婷精品在线观看| 四虎国产精品免费观看| 99国产精品视频免费观看一公开| 亚洲综合图色| 国产一区二区三区网| 女人天堂亚洲aⅴ在线观看| 亚洲精品自拍| 国产伦精品一区二区三区视频| 日韩激情一区| 免费在线观看成人| 成人一区而且| 视频一区二区三区在线| 欧美国产专区| 日本欧洲一区二区| 久久久免费人体| 99日韩精品| 国产一区二区三区黄网站| 日韩一区精品字幕| 色综合狠狠操| 日本在线不卡视频一二三区| 日韩理论视频| 91精品日本| 日韩精品dvd| 青青青国产精品| 国精品一区二区三区| 国产欧美日韩精品高清二区综合区 | 国产日韩欧美三区| 香蕉久久精品| 久久99精品久久久久久园产越南| 都市激情国产精品| 日本中文字幕视频一区| 日本在线啊啊| 国产欧美精品| 蜜臀av国产精品久久久久| av中文字幕在线观看第一页| 蜜桃视频一区二区| 欧美福利专区| av在线最新| 欧美激情麻豆| 日本成人在线不卡视频| 国产综合激情| 国产成人77亚洲精品www| 亚洲免费观看高清完整版在线观| 日韩中文在线电影| 亚洲精品麻豆| 黄色av一区| 日韩欧美网址| 麻豆视频一区二区| 日本不卡中文字幕| 日本大胆欧美人术艺术动态| 99久久激情| 色综合五月天| 久久三级毛片| 麻豆精品久久久| 国产精品视频3p| 日韩国产欧美在线视频| 欧美一级专区| 亚洲一区区二区| 激情欧美亚洲| 韩国精品主播一区二区在线观看| 国产精品15p| 国产欧美日韩精品一区二区三区| 婷婷综合国产| 亚洲精品黄色| 亚洲精品大片| 亚洲精品免费观看| 视频一区日韩精品| 亚洲开心激情| 亚洲乱码一区| 日韩一区二区三区精品| 日韩精品一级|