《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个使用Python编写的轻量级百度爬虫BaiduSpider。 BaiduSpider是一个使用Python编写的轻量级百度爬虫。它基于Requests和BeautifulSoup构建,并提供了易用的API接口以及完善的类型注释,提升开发者的使用体验。 功能特性节省提取数据的时间,对于类似深度学习项目的数据模型建立与训练起到了良好的帮助精准、快速地提取百度搜索结果,并删除广告搜索结果大而全,支持多种搜索类型,支持多种返回类型提供了简洁易用的API 安装 依赖环境:Python3。6 使用pip安装:pipinstallbaiduspider 从GitHub手动安装:gitclonegitgithub。com:BaiduSpiderBaiduSpider。git。。。pythonsetup。pyinstall 示例 百度网页搜索,也可以作为综合搜索使用。BaiduSpider。searchweb(self:BaiduSpider,query:str,pn:int1,exclude:list〔〕,proxies:Union〔dict,None〕None,)WebResult 参数querystr:要查询网页搜索的字符串pnint:要爬取的页码,默认为1,可选excludedict:要屏蔽的子部件列表,可选timestrList〔datetime。datetime〕:搜索时间范围proxiesUnion〔dict,None〕:代理配置,默认为None,可选 实例 基本的调用:这是一个最基本的参数query。它用于传递搜索词(字符串类型)。导入BaiduSpiderfrombaiduspiderimportBaiduSpiderfrompprintimportpprint实例化BaiduSpiderspiderBaiduSpider()搜索网页pprint(spider。searchweb(query要搜索的关键词)。plain) 指定页码:你可以通过设置pn参数来更改BaiduSpider所获取的页码。frombaiduspiderimportBaiduSpiderfrompprintimportpprintspiderBaiduSpider()搜索网页,并传入页码参数(此处为第二页)pprint(spider。searchweb(query要搜索的关键词,pn2)。plain) 注意:传入页码参数的时候一定要小心,务必不要传入过大的页码,否则百度搜索会自动跳转回第一页。 屏蔽特定的搜索结果:这个参数可以为你提供很大的便捷。通过设置exclude列表,你可以屏蔽某些特定的网页搜索子搜索结果来提高解析速度。frombaiduspiderimportBaiduSpiderfrompprintimportpprintspiderBaiduSpider()搜索网页,并传入要屏蔽的结果在本样例中,屏蔽了贴吧和博客pprint(spider。searchweb(query要搜索的关键词,exclude〔tieba,blog〕)。plain) exclude的值可以包含:〔news,video,baike,tieba,blog,gitee,related,calc〕,分别表示:资讯,视频,百科,贴吧,博客,Gitee代码仓库,相关搜索,计算。exclude的值也可以是〔all〕,表示屏蔽除了普通搜索结果外的所有搜索结果。实例:frombaiduspiderimportBaiduSpiderfrompprintimportpprintspiderBaiduSpider()搜索网页,并传入要屏蔽的结果在本样例中,屏蔽了所有非普通的搜索结果pprint(spider。searchweb(query要搜索的关键词,exclude〔all〕)。plain) 如果exclude中包含all且还有其他参数,那么将按照只有all的方式过滤搜索结果。 按时间筛选:time参数能够实现更精准的搜索。time的取值可以是一个字符串或者是一个由datetime。datetime组成的元组。比如,使用字符串形式:frombaiduspiderimportBaiduSpiderfrompprintimportpprintspiderBaiduSpider()搜索网页,仅显示时间段内的搜索结果在本样例中,筛选后仅显示一周内的搜索结果pprint(spider。searchweb(query要搜索的关键词,timeweek)。plain) 此功能使用百度内置的搜索时间筛选器筛选结果,并非使用程序筛选。在这个样例中,time的值是week,代表筛选一周内的搜索结果。time的可选值如下:〔day,week,month,year〕。分别表示:一天内、一周内、一月内、一年内。除此以外,BaiduSpider还支持自定义时间段。例如:frombaiduspiderimportBaiduSpiderfrompprintimportpprintfromdatetimeimportdatetimespiderBaiduSpider()在本样例中,筛选后仅显示2020。1。52020。4。9的搜索结果pprint(spider。searchweb(query要搜索的关键词,time(datetime(2020,1,5),datetime(2020,4,9)))。plain) 在这个样例中,time的值是一个元组(tuple)。元组的第一个值是起始时间,第二个值是结束时间。BaiduSpider会把他们都转化成time。time()形式的浮点数(然后仅保留整数),所以你也可以将datetime替换为一个整数。 END 此项目使用GPL3。0开源协议,更多功能大家可自行前往阅读。 开源地址:https:github。comBaiduSpiderBaiduSpider