一个能够屏蔽百度广告的爬虫:BaiduSpider
前言
有時候做數據統計的時候,常常很難大而全地抓取一個頁面上所有的搜索結果,比如百度網頁搜索,有時候會有視頻欄,新聞欄,百科欄,等等。普通的爬蟲都不能爬到這些,因為它們的結構跟普通搜索結果是完全不一樣的。但是,BaiduSpider可以。
BaiduSpider是一個能夠抓取百度各類搜索結果的爬蟲,使用Python編寫。它十分輕量,但是卻能夠準確地爬取各種類型復雜的結果,包括我們上面所說的視頻,新聞,百科等。
目前實現的功能有百度網頁搜索,百度圖片搜索,百度知道搜索,百度視頻搜索,百度資訊搜索,百度文庫搜索,百度經驗搜索和百度百科搜索。
除此以外,BaiduSpider還擁有多種不同的平臺,目前有Python原生,Web UI和Web API,并且接下來還會推出BaiduSpider CLI,讓你在命令行里完成搜索。
主要功能
當然,上面才是它的一點點功能,它最大的賣點在于,它所爬取的所有搜索結果都沒有廣告!有了它,你就再也不用去安裝什么AdBlock,AdGuard啦!
但是,讓我們先來小試牛刀,看看它爬取搜索結果的準確度和完整度怎么樣吧。比如說,我們來搜索一下Python教程視頻:
對比一下百度搜索的頁面:
我們可以發現,BaiduSpider爬取到的信息是和百度一模一樣的(除去百度最后一個是廣告)!可見BaiduSpider的準確度。
廣告屏蔽
接下來,我們來看看它處理廣告的能力:
幾乎一半都是廣告。。。再看看BaiduSpider的:
可以很直接地看出BaiduSpider屏蔽了所有右下角帶有廣告標簽的搜索結果,是不是十分大快人心……
基本功:Python原生
說了這么多,展示的都是網頁端的結果,沒有一個是能通過Python調用的。你可能會問,這玩意不是Python編寫的嗎?怎么沒有提供Python API?
別急,接下來我們就來介紹它最常用的部分——BaiduSpider Python原生。
比如,我想要搜索關于git的結果,通過Python API調用就只有這么幾行代碼:
from baiduspider import BaiduSpider from pprint import pprintspider = BaiduSpider() pprint(spider.search_web('git'))沒錯,BaiduSpider也發布了PyPI包!讓我們看一下這段代碼的運行結果如何:
{'results': [{'result': 100000000, 'type': 'total'},{'results': ['git教程','github中文官網網頁','小奶貓回家地址github','git新手教程','git通俗一點是干什么的','github官網切換中文','git提交代碼的正確步驟','Git使用教程','游戲源碼'],'type': 'related'},{'des': 'Git is a free and open source distributed version ''control system designed to handle everything from small ''to very larg...','origin': 'git-scm.com/','time': None,'title': 'git官網','type': 'result','url': 'http://www.baidu.com/link?url=io2eYwa4OovMW42jQtlgSYuRE1emLSXzGNikMbmxYTe'},{'des': 'Git 教程 Git 是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。Git 是 ''Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼...','origin': 'www.runoob.com/git/git-tutori....','time': None,'title': 'Git 教程 | 菜鳥教程','type': 'result','url': 'http://www.baidu.com/link?url=iTkBZk7h5QyDo6J8fmT4c4ufn7zJnEUhB0fXyBYBg334qXZ4GzWIpu-eV4hqjpk3hYjFlNZZwUPcO9u3nH8xL_'},{'des': 'Git 教程 Git 是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。Git 是 ''Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼...','origin': None,'time': None,'title': 'git安裝相關博客','type': 'result','url': 'http://www.baidu.com/link?url=Q-zaj4E2-_jaO-ZR5DTM2U8r8ZH3_8JuPtsKgXllLcVQW-4H40hBzIFqcgoByjmrN-jr7_WtIP9Cp55C-nLR2A4LNtpcHCgrBjCs0bUPZHC'},{'des': 'If you already have Git installed, you can get the ''latest development version via Git itself: git clone ''https://github.com/git/git ...','origin': 'www.git-scm.com/download/','time': None,'title': 'Git - Downloads','type': 'result','url': 'http://www.baidu.com/link?url=ITh8cnvqErJCQx9ICLrJed8f5hGCEU5JLpVoK1MsUPqqsl5sPnlhfCL8OjxuQLSN'},{'des': 'If you already have Git installed, you can get the ''latest development version via Git itself: git clone ''https://github.com/git/git ...','origin': None,'time': None,'title': 'Git-開源的分布式版本控制系統','type': 'result','url': 'http://www.baidu.com/link?url=Tft8L7Dd71mQxbWpuJO7SpT2HR2RDgkQLNSEnk_MxaPQ6ZML0TUpgflG9DOvTGzND3olfU9ScMKmPDKRLO_l33vHKTGNMmwv89PgOFiVmP_'},{'des': 'Git Source Code Mirror - This is a publish-only ''repository and all pull requests are ignored. Please ''follow Documentation/SubmittingPatches procedure for ...','origin': 'github','time': None,'title': 'GitHub - git/git: Git Source Code Mirror - This is a ''p...','type': 'result','url': 'http://www.baidu.com/link?url=KtsMqw1oBIWWlkZDnq2Y5P1tdu33Uy0n9y5ZYUufiG_ab_m6ky41KrZUkYbXf2gC'},{'des': 'git Git Source Code Mirror - This is a publish-only ''repository and all pull requests are ignored. Please ''follow Documentation/SubmittingPat...','origin': 'github','time': '2021年1月2日','title': 'Git · GitHub','type': 'result','url': 'http://www.baidu.com/link?url=rxFpc1Ymkb4RTcvH19Qg1VEcf62S5T6eMpHw7v3Xz5W'},{'des': '最近要與部門同事一起做技術分享,我選擇了Git,因為Git ''是一種在全球范圍都廣受歡迎的版本控制系統。在開發過程中,為了跟蹤代碼,文檔,項目等信息中的變化,版本控制...','origin': '博客園','time': None,'title': '一個小時學會Git - 張果 - 博客園','type': 'result','url': 'http://www.baidu.com/link?url=q2JO9SIY9y_8Cvs8mMfkXKUF1pY8HCaS0v1FYPQhzvOncl4HxlUXoVuJXsds_WdG3ibcwYf7JNwuWWGhP00xF_'},{'des': 'We bring the awesome Git VCS to Windows','origin': 'gitforwindows.org/','time': None,'title': '這里下載git - Git for Windows','type': 'result','url': 'http://www.baidu.com/link?url=LJMKB611S4QxZWM5lSLUL2K0ta4zYMZUtzrdx6bvixWSUDtXkBg1Izu5M2CoU3yP'}],'total': 10}可以看出,所有結果都已經分好了類(此處主要是普通的搜索結果),并且還有總計搜索結果數、總頁數等附加信息。所有BaiduSpider方法的返回值都是一個dict,里面有results和total兩個鍵,分別代表所有搜索結果(list),和總頁數(int)。
最后
看到這里,你是不是已經想見識一下這個神器了呢?什么?多少錢?不,它是免費的!它不僅免費,而且還開源呢。不僅如此,它也提供詳細的文檔(部分還在撰寫中),可以說是“配套齊全”啦。
GitHub地址:
https://github.com/BaiduSpider/BaiduSpider
文檔地址:
https://baiduspider.github.io
文中提到的網頁版地址(目前還在Alpha階段,請適量使用,僅作為demo用途):https://baidus.netlify.app
視頻可查看原文鏈接:一個能夠屏蔽百度廣告的爬蟲:BaiduSpider
總結
以上是生活随笔為你收集整理的一个能够屏蔽百度广告的爬虫:BaiduSpider的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各版本JQuery文件下载
- 下一篇: 一支笔的测试点_给你一支笔,如何测试