爬虫爬取百度词条
頁面是隨時升級的,所以現在的鏈接不代表以后的鏈接,但是萬變不離其宗,只要學會解析頁面,那么就能走的更遠。
碼云鏈接:https://gitee.com/ALADL/baike_spider.git
from baike_spider import url_manager,html_downloader, html_parser, html_outputerclass SpiderMain(object):def __init__(self):# 初始化各個對象self.urls = url_manager.UrlManager()# url管理器self.downloader = html_downloader.HtmlDownloader()# 下載器self.parser = html_parser.HtmlParser()# 解析器self.outputer = html_outputer.HtmlOutputer()# 輸出器def craw(self, root_url):count = 1# 將入口(root)url添加進管理器 self.urls.add_new_url(root_url)# 當管理器中有了url之后,我們就可以啟動循環while self.urls.has_new_url():# 為了防止無效的url,這里異常處理try:# 獲取一個帶爬取的urlnew_url = self.urls.get_new_url()# 輔助,打印一下當前print('craw %d:%s'%(count,new_url))# 啟用下載器下載頁面html_cont = self.downloader.download(new_url)# 調用解析器解析頁面,得到新的url和新的數據new_urls,new_data = self.parser.paser(new_url,html_cont)# 分別處理,新的url添加進url管理器 self.urls.add_new_urls(new_urls)# 同時收集數據 self.outputer.collect_data(new_data)# 先爬取1000個urlif count == 1000:breakcount += 1except:print("craw failed")# 調用outputer來處理數據 self.outputer.output_html()if __name__ == '__main__':root_url = 'https://baike.baidu.com/item/%E8%8B%8F%E8%BD%BC/53906#hotspotmining'# main函數中復制要爬取的頁面obj_spider = SpiderMain()obj_spider.craw(root_url)?
轉載于:https://www.cnblogs.com/ALADL/p/9671690.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 如何在终端编译C++代码
- 下一篇: python 约束与异常处理