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

本文介绍了一款名为BaiduSpider的Python爬虫,专为获取百度各类搜索结果而设计,包括网页、图片、视频、知道等,其亮点在于广告屏蔽功能,通过Python API轻松调用,提供广告-free的搜索体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

spider = 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

<think>好的,我现在需要回答用户关于Baiduspider-image爬虫的行为规则和robots.txt配置的问题。首先,我需要回忆一下用户提供的引用内容,特别是引用[1]、[2]、[3],里面提到了robots.txt的基本结构、淘宝屏蔽百度的例子,以及Disallow的不同用法。 用户的问题具体是关于Baiduspider-image的,所以首先要确定这个User-Agent对应的爬虫是什么。根据常见的知识,Baiduspider百度主要的搜索引擎爬虫,而Baiduspider-image可能专门用于抓取图片。需要确认这一点是否正确。 接下来,用户想知道这个爬虫的行为规则。根据引用[3],User-Agent行指定了爬虫的类型,所以如果网站想要针对Baiduspider-image设置规则,应该在robots.txt中使用User-agent: Baiduspider-image。然后Disallow或Allow指令来控制其访问权限。例如,淘宝的例子中用了User-agent: Baiduspider来禁止整个目录,这说明针对特定爬虫需要明确指定其User-Agent名称。 然后,关于配置规则,引用[3]提到Disallow的不同用法,比如精确屏蔽和相对屏蔽。例如,Disallow: /images/ 会阻止访问以/images/开头的所有URL,但可能允许其他路径。需要说明如何正确编写这些规则,避免语法错误。 另外,用户可能关心如何允许或禁止特定目录下的图片被爬取。比如,如果网站希望禁止Baiduspider-image访问某个图片目录,应该在robots.txt中设置User-agent: Baiduspider-image后跟Disallow: /images/private/。同时,注意区分大小写,因为User-agent名称是否区分大小写?根据引用[2]中的例子,淘宝的robots.txt中同时用了Baiduspiderbaiduspider,可能说明某些爬虫对大小写不敏感,但最好严格按照官方文档建议的写法。 还需要考虑是否存在Allow指令来覆盖Disallow的情况。例如,如果先Disallow一个目录,再用Allow允许其中的子目录,这时候规则如何应用。引用[3]中提到Allow的使用,但具体顺序可能需要按照最长的匹配规则来处理。 此外,用户可能想知道Baiduspider-image是否遵循robots.txt的标准,比如是否支持Crawl-delay等参数。不过根据常见情况,百度爬虫通常遵循基本的Disallow和Allow规则,但可能不支持所有扩展指令,需要查阅百度官方的文档确认。 最后,生成相关问题的时候,需要考虑用户可能进一步的问题,比如如何测试配置是否生效,或者如何处理多个User-agent的情况,以及百度爬虫的其他变种,如Baiduspider-video等。</think>### Baiduspider-image爬虫行为及robots.txt配置规则 1. **Baiduspider-image的User-Agent识别** - `Baiduspider-image`是百度专门用于抓取网页图片资源的爬虫,其User-Agent标识为`Baiduspider-image`(需严格匹配名称,可能区分大小写)[^3]。 - 在`robots.txt`中,若需针对该爬虫设置规则,需明确指定`User-agent: Baiduspider-image`。 2. **robots.txt配置示例** ```text User-agent: Baiduspider-image Disallow: /private-images/ # 禁止抓取以/private-images/开头的路径 Allow: /public-images/logo.png # 允许抓取特定图片 ``` - `Disallow`规则支持**前缀匹配**。例如`Disallow: /temp/`会禁止访问`/temp/1.jpg`和`/temp/data/2.jpg`,但允许`/temp123`[^3]。 - `Allow`可覆盖部分`Disallow`规则,但需注意**最长路径优先匹配原则**。 3. **行为规则说明** - **遵循标准协议**:百度爬虫遵守Robots Exclusion Standard,若`robots.txt`中未明确允许或禁止,默认允许抓取。 - **抓取频率**:通常根据网站权重动态调整,无法通过`robots.txt`直接控制,需通过百度站长平台进一步设置[^1]。 - **图片抓取范围**:主要针对网页内嵌图片(如`<img>`标签),可能忽略JavaScript动态加载的内容。 4. **注意事项** - **精确匹配User-Agent**:若需同时约束其他百度爬虫(如`Baiduspider`),需单独添加规则块。 - **避免冲突规则**:例如同时设置`Disallow:`和`Allow:`同一路径时,以更具体的规则为准。 - **测试工具验证**:可通过百度搜索资源平台的[robots工具](https://ziyuan.baidu.com/robots/index)检测配置有效性。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值