一个能够屏蔽百度广告的爬虫:BaiduSpider
前言
有時(shí)候做數(shù)據(jù)統(tǒng)計(jì)的時(shí)候,常常很難大而全地抓取一個(gè)頁面上所有的搜索結(jié)果,比如百度網(wǎng)頁搜索,有時(shí)候會有視頻欄,新聞欄,百科欄,等等。普通的爬蟲都不能爬到這些,因?yàn)樗鼈兊慕Y(jié)構(gòu)跟普通搜索結(jié)果是完全不一樣的。但是,BaiduSpider可以。
BaiduSpider是一個(gè)能夠抓取百度各類搜索結(jié)果的爬蟲,使用Python編寫。它十分輕量,但是卻能夠準(zhǔn)確地爬取各種類型復(fù)雜的結(jié)果,包括我們上面所說的視頻,新聞,百科等。
目前實(shí)現(xiàn)的功能有百度網(wǎng)頁搜索,百度圖片搜索,百度知道搜索,百度視頻搜索,百度資訊搜索,百度文庫搜索,百度經(jīng)驗(yàn)搜索和百度百科搜索。
除此以外,BaiduSpider還擁有多種不同的平臺,目前有Python原生,Web UI和Web API,并且接下來還會推出BaiduSpider CLI,讓你在命令行里完成搜索。
主要功能
當(dāng)然,上面才是它的一點(diǎn)點(diǎn)功能,它最大的賣點(diǎn)在于,它所爬取的所有搜索結(jié)果都沒有廣告!有了它,你就再也不用去安裝什么AdBlock,AdGuard啦!
但是,讓我們先來小試牛刀,看看它爬取搜索結(jié)果的準(zhǔn)確度和完整度怎么樣吧。比如說,我們來搜索一下Python教程視頻:
對比一下百度搜索的頁面:
我們可以發(fā)現(xiàn),BaiduSpider爬取到的信息是和百度一模一樣的(除去百度最后一個(gè)是廣告)!可見BaiduSpider的準(zhǔn)確度。
廣告屏蔽
接下來,我們來看看它處理廣告的能力:
幾乎一半都是廣告。。。再看看BaiduSpider的:
可以很直接地看出BaiduSpider屏蔽了所有右下角帶有廣告標(biāo)簽的搜索結(jié)果,是不是十分大快人心……
基本功:Python原生
說了這么多,展示的都是網(wǎng)頁端的結(jié)果,沒有一個(gè)是能通過Python調(diào)用的。你可能會問,這玩意不是Python編寫的嗎?怎么沒有提供Python API?
別急,接下來我們就來介紹它最常用的部分——BaiduSpider Python原生。
比如,我想要搜索關(guān)于git的結(jié)果,通過Python API調(diào)用就只有這么幾行代碼:
from baiduspider import BaiduSpider from pprint import pprintspider = BaiduSpider() pprint(spider.search_web('git'))沒錯(cuò),BaiduSpider也發(fā)布了PyPI包!讓我們看一下這段代碼的運(yùn)行結(jié)果如何:
{'results': [{'result': 100000000, 'type': 'total'},{'results': ['git教程','github中文官網(wǎng)網(wǎng)頁','小奶貓回家地址github','git新手教程','git通俗一點(diǎn)是干什么的','github官網(wǎng)切換中文','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官網(wǎng)','type': 'result','url': 'http://www.baidu.com/link?url=io2eYwa4OovMW42jQtlgSYuRE1emLSXzGNikMbmxYTe'},{'des': 'Git 教程 Git 是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。Git 是 ''Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼...','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 是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。Git 是 ''Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼...','origin': None,'time': None,'title': 'git安裝相關(guān)博客','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-開源的分布式版本控制系統(tǒng)','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': '最近要與部門同事一起做技術(shù)分享,我選擇了Git,因?yàn)镚it ''是一種在全球范圍都廣受歡迎的版本控制系統(tǒng)。在開發(fā)過程中,為了跟蹤代碼,文檔,項(xiàng)目等信息中的變化,版本控制...','origin': '博客園','time': None,'title': '一個(gè)小時(shí)學(xué)會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}可以看出,所有結(jié)果都已經(jīng)分好了類(此處主要是普通的搜索結(jié)果),并且還有總計(jì)搜索結(jié)果數(shù)、總頁數(shù)等附加信息。所有BaiduSpider方法的返回值都是一個(gè)dict,里面有results和total兩個(gè)鍵,分別代表所有搜索結(jié)果(list),和總頁數(shù)(int)。
最后
看到這里,你是不是已經(jīng)想見識一下這個(gè)神器了呢?什么?多少錢?不,它是免費(fèi)的!它不僅免費(fèi),而且還開源呢。不僅如此,它也提供詳細(xì)的文檔(部分還在撰寫中),可以說是“配套齊全”啦。
GitHub地址:
https://github.com/BaiduSpider/BaiduSpider
文檔地址:
https://baiduspider.github.io
文中提到的網(wǎng)頁版地址(目前還在Alpha階段,請適量使用,僅作為demo用途):https://baidus.netlify.app
視頻可查看原文鏈接:一個(gè)能夠屏蔽百度廣告的爬蟲:BaiduSpider
總結(jié)
以上是生活随笔為你收集整理的一个能够屏蔽百度广告的爬虫:BaiduSpider的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各版本JQuery文件下载
- 下一篇: 一支笔的测试点_给你一支笔,如何测试