一个能够屏蔽百度广告的爬虫:BaiduSpider

优采云 发布时间: 2022-05-07 07:14

  一个能够屏蔽百度广告的爬虫:BaiduSpider

  <p style="font-size: inherit;color: inherit;line-height: inherit;">作者:samzhangjy<br />来源:公众号「杰哥的IT之旅」<br />ID:Jake_Internet</p>

  前言

  有时候做数据统计的时候,常常很难大而全地抓取一个页面上所有的搜索结果,比如百度网页搜索,有时候会有视频栏,新闻栏,百科栏,等等。普通的爬虫都不能爬到这些,因为它们的结构跟普通搜索结果是完全不一样的。但是,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<br />from pprint import pprint<br /><br />spider = BaiduSpider()<br />pprint(spider.search_web('git'))<br />

  没错,BaiduSpider也发布了PyPI包!让我们看一下这段代码的运行结果如何:

  {'results': [{'result': 100000000, 'type': 'total'},<br />             {'results': ['git教程',<br />                          'github中文官网网页',<br />                          '小奶猫回家地址github',<br />                          'git新手教程',<br />                          'git通俗一点是干什么的',<br />                          'github官网切换中文',<br />                          'git提交代码的正确步骤',<br />                          'Git使用教程',<br />                          '游戏源码'],<br />              'type': 'related'},<br />             {'des': 'Git is a free and open source distributed version '<br />                     'control system designed to handle everything from small '<br />                     'to very larg...',<br />              'origin': 'git-scm.com/',<br />              'time': None,<br />              'title': 'git官网',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=io2eYwa4OovMW42jQtlgSYuRE1emLSXzGNikMbmxYTe'},<br />             {'des': 'Git 教程 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 '<br />                     'Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码...',<br />              'origin': 'www.runoob.com/git/git-tutori....',<br />              'time': None,<br />              'title': 'Git 教程 | 菜鸟教程',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=iTkBZk7h5QyDo6J8fmT4*敏*感*词*ufn7zJnEUhB0fXyBYBg334qXZ4GzWIpu-eV4hqjpk3hYjFlNZZwUPcO9u3nH8xL_'},<br />             {'des': 'Git 教程 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 '<br />                     'Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码...',<br />              'origin': None,<br />              'time': None,<br />              'title': 'git安装相关博客',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=Q-zaj4E2-_jaO-ZR5DTM2U8r8ZH3_8JuPtsKgXllLcVQW-4H40hBzIFqcgoByjmrN-jr7_WtIP9Cp55C-nLR2A4LNtpcHCgrBjCs0bUPZHC'},<br />             {'des': 'If you already have Git installed, you can get the '<br />                     'latest development version via Git itself: git clone '<br />                     'https://github.com/git/git ...',<br />              'origin': 'www.git-scm.com/download/',<br />              'time': None,<br />              'title': 'Git - Downloads',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=ITh8cnvqErJCQx9ICLrJed8f5hGCEU5JLpVoK1MsUPqqsl5sPnlhfCL8OjxuQLSN'},<br />             {'des': 'If you already have Git installed, you can get the '<br />                     'latest development version via Git itself: git clone '<br />                     'https://github.com/git/git ...',<br />              'origin': None,<br />              'time': None,<br />              'title': 'Git-开源的分布式版本控制系统',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=Tft8L7Dd71mQxbWpuJO7SpT2HR2RDgkQLNSEnk_MxaPQ6ZML0TUpgflG9DOvTGzND3olfU9ScMKmPDKRLO_l33vHKTGNMmwv89PgOFiVmP_'},<br />             {'des': 'Git Source Code Mirror - This is a publish-only '<br />                     'repository and all pull requests are ignored. Please '<br />                     'follow Documentation/SubmittingPatches procedure for ...',<br />              'origin': 'github',<br />              'time': None,<br />              'title': 'GitHub - git/git: Git Source Code Mirror - This is a '<br />                       'p...',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=KtsMqw1oBIWWlkZDnq2Y5P1tdu33Uy0n9y5ZYUufiG_ab_m6ky41KrZUkYbXf2gC'},<br />             {'des': 'git Git Source Code Mirror - This is a publish-only '<br />                     'repository and all pull requests are ignored. Please '<br />                     'follow Documentation/SubmittingPat...',<br />              'origin': 'github',<br />              'time': '2021年1月2日',<br />              'title': 'Git · GitHub',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=rxFpc1Ymkb4RTcvH19Qg1VEcf62S5T6eMpHw7v3Xz5W'},<br />             {'des': '最近要与部门同事一起做技术分享,我选择了Git,因为Git '<br />                     '是一种在全球范围都广受欢迎的版本控制系统。在开发过程中,为了跟踪代码,文档,项目等信息中的变化,版本控制...',<br />              'origin': '博客园',<br />              'time': None,<br />              'title': '一个小时学会Git - 张果 - 博客园',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=q2JO9SIY9y_8Cvs8mMfkXKUF1pY8HCaS0v1FYPQhzvOncl4HxlUXoVuJXsds_WdG3ibcwYf7JNwuWWGhP00xF_'},<br />             {'des': 'We bring the awesome Git VCS to Windows',<br />              'origin': 'gitforwindows.org/',<br />              'time': None,<br />              'title': '这里下载git - Git for Windows',<br />              'type': 'result',<br />              'url': 'http://www.baidu.com/link?url=LJMKB611S4QxZWM5lSLUL2K0ta4zYMZUtzrdx6bvixWSUDtXkBg1Izu5M2CoU3yP'}],<br /> 'total': 10}<br />

  可以看出,所有结果都已经分好了类(此处主要是普通的搜索结果),并且还有总计搜索结果数、总页数等附加信息。所有BaiduSpider方法的返回值都是一个dict,里面有results和total两个键,分别代表所有搜索结果(list),和总页数(int)。

  最后

  看到这里,你是不是已经想见识一下这个神器了呢?什么?多少钱?不,它是免费的!它不仅免费,而且还开源呢。不仅如此,它也提供详细的文档(部分还在撰写中),可以说是“配套齐全”啦。

  GitHub地址:

  文档地址:

  文中提到的网页版地址(目前还在Alpha阶段,请适量使用,仅作为demo用途):

  本篇由作者:samzhangjy 投稿,不妨大家可以给他的 GitHub 点个 Star 支持一下。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线