小編給大家分享一下多線程在python3爬蟲(chóng)中調(diào)用函數(shù)的示例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)的開(kāi)發(fā),更需要了解用戶,從用戶角度來(lái)建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。創(chuàng)新互聯(lián)建站多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見(jiàn)的多,溝通容易、能幫助客戶提出的運(yùn)營(yíng)建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián)建站,不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來(lái)訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。可以說(shuō)函數(shù)和python爬蟲(chóng)一般情況下都可以結(jié)合使用,但是這需要小伙伴們對(duì)于函數(shù)的使用方法進(jìn)行充分的了解,才能和python爬蟲(chóng)的知識(shí)點(diǎn)緊密結(jié)合使用。經(jīng)過(guò)幾天多線程和爬蟲(chóng)的內(nèi)容講解,相信大家對(duì)于這方面的模塊內(nèi)容已經(jīng)比較熟悉的,所以可以用我們的老朋友download()函數(shù)進(jìn)行一次知識(shí)點(diǎn)的交流,下面就來(lái)來(lái)看看download()在python爬蟲(chóng)中的運(yùn)用吧。
對(duì)其進(jìn)行構(gòu)造,創(chuàng)建日志,download()函數(shù)創(chuàng)建線程,update_queque_url對(duì)連接的列表進(jìn)行更新,get_url()根據(jù)bs4進(jìn)行匹配獲取連接,download_all()通過(guò)調(diào)用download()函數(shù)實(shí)現(xiàn)批量下載。spider作為一個(gè)入口函數(shù)進(jìn)行爬取
class Crawler: def __init__(self,name,domain,thread_number): self.name=name self.domain=domain self.thread_number=thread_number self.logfile=open('log.txt','w') self.thread_pool=[] self.url = 'http://'+domain def spider(self):# 內(nèi)容會(huì)隨著爬蟲(chóng)的進(jìn)行而更新 global g_queue_urls# 初始,隊(duì)列中僅有一個(gè)url g_queue_urls.append(self.url)# 爬取的深度 depth =0 print(f'爬蟲(chóng){self.name}開(kāi)始啟動(dòng)........') while g_queue_urls: depth +=1 print(f'當(dāng)前爬取深度是{depth}') self.logfile.write(f'URL:{g_queue_urls[0]}') self.download_all() # 下載所有 self.update_queque_url() # 更新 url隊(duì)列 self.logfile.write(f">>>Depth:{depth}") count = 0 while count10 and 'http://' not in link['href']: # 如果link是相對(duì)地址 links.append(self.url +link['href']) except Exception as e: print("fail to get url",e) return links
主函數(shù)調(diào)用爬蟲(chóng)函數(shù)的spider()方法
if __name__=="__main__": domain ="www.geyanw.com" thread_number=10 name="geyan" crawler =Crawler(name,domain,thread_number) crawler.spider()
除了download()函數(shù),spider()也可以在python爬蟲(chóng)中調(diào)用。
以上是“多線程在python3爬蟲(chóng)中調(diào)用函數(shù)的示例”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!