BaiduSpider:一个爬取百度的利器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
samzhangjy
V2EX    分享创造

BaiduSpider:一个爬取百度的利器

  •  1
     
  •   samzhangjy
    samzhangjy 2021-03-19 19:02:38 +08:00 5252 次点击
    这是一个创建于 1696 天前的主题,其中的信息可能已经有所发展或是发生改变。

    BaiduSpider

    BaiduSpider


    BaiduSpider,一个爬取百度的利器


    简体中文 | English

    made-with-python GitHub GitHub Repo stars GitHub forks PyPI version downloads

    BaiduSpider 是一个爬取百度搜索结果的 Python 爬虫,目前支持百度网页搜索,百度图片搜索,百度知道搜索,百度视频搜索,百度资讯搜索,百度文库搜索,百度经验搜索和百度百科搜索。


    免责声明


    此项目仅作为学习用途,不可商用或爬取百度大量数据。此外,本项目已经更新为GPL-V3版权协议,意味着涉及(使用)此项目的任何其它项目必须开源且注明出处。特此说明,违者后果自负。


    安装


    BaiduSpider 现已发布 PyPI 包,可以使用pip安装:

    $ pip install baiduspider 

    或者从 GitHub 直接 clone:

    $ git clone https://github.com/BaiduSpider/BaiduSpider.git # ... $ python setup.py install 

    提示

    BaiduSpider 目前仅支持 Python 3.6+,暂不支持 Python 2.x


    快速上手


    BaiduSpider 提供简易的,人性化的 API,可通过实例化BaiduSpider对象后调用。例如,我想要使用网页搜索函数查询有关Python的信息:

    # 导入 BaiduSpider from baiduspider import BaiduSpider from pprint import pprint # 实例化 BaiduSpider spider = BaiduSpider() # 搜索网页 pprint(spider.search_web(query='Python')) 

    获得的搜索结果将类似下面的这个 Python 字典结果:

    {'results': [{'result': 100000000, 'type': 'total'}, {'results': ['0 基础学 python 有多难', 'python 自学行吗', '学 python 要多久', 'python 手机版', 'python 有什么用', '财务有必要学 python 吗', 'python 为什么叫爬虫', 'python 处理 excel 的优势', 'python 自学免费教程'], 'type': 'related'}, {'result': {'cover': None, 'cover-type': None, 'des': 'Python 是一种跨平台的计算机程序设计语言。 ' '是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。', 'title': 'Python(计算机程序设计语言) - 百度百科', 'url': 'http://www.baidu.com/link?url=2z_Q_urbKikP4py4Y9tlMImyT090fjjaKi1gi4Z6bjvk1lU8MqYHewJTumd9YEpC5Jusis_8nqlTKsJgEMcRUa'}, 'type': 'baike'}, {'des': 'The official home of the Python Programming Language... ' '# Python 3: Simple output (with Unicode) >>> ' 'print("Hello, I\'m Python!") Hello, I\'m Python!', 'origin': 'www.python.org/', 'time': None, 'title': 'Welcome to Python.org', 'type': 'result', 'url': 'http://www.baidu.com/link?url=NC7GXkMtnZ9t8csmbawkvfp2QbDaaMHleael-qkCOtlSy_kfPsT8ARljUiIVOH2L'}, {'des': 'The official home of the Python Programming Language', 'origin': 'www.python.org/getit', 'time': None, 'title': 'Download Python | Python.org', 'type': 'result', 'url': 'http://www.baidu.com/link?url=AKBkNZv2L7600dOvqeylKK0fSRJJboDgjf7xGPuZfx2giBnXAiukP5ch7Tb619zC'}, {'des': 'Python(英国发音:/paθn/ 美国发音:/paθn/), ' '是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于 1989 年发明,第...', 'origin': '知乎', 'time': None, 'title': 'Python - 知乎', 'type': 'result', 'url': 'http://www.baidu.com/link?url=xxKNKxpUHwEvoPt7OlqXceI0jTqTgvkJr0cncYDUPVNpYB397k-mbLlMOrw4IhNa'}, {'des': 'Python 基础教程 Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python 由 ' 'Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991...', 'origin': 'www.runoob.com/python/python-t...', 'time': '2020 年 1 月 1 日', 'title': 'Python 基础教程 | 菜鸟教程', 'type': 'result', 'url': 'http://www.baidu.com/link?url=ShmleIIBtIEfujCO1Wqh3PrOab_VrP87gN9GkEDGwQSj9OJ27Hst5NRomZtDRaxI7-WWSGLJ0-olY7Gt5merVK'}, {'des': '在 Python 中,* 和 ** 具有语法多义性,具体来说是有三类用法。1. 算数运算* 代表乘法** ' '代表乘方>>> 2 * 510>>> 2 ** 5322...', 'origin': 'CSDN 技术社区', 'time': '2018 年 6 月 5 日', 'title': 'Python3 * 和 ** 运算符_极客点儿-CSDN 博客', 'type': 'result', 'url': 'http://www.baidu.com/link?url=Wo6dq8qZ24BrXjb6ZO5Ft20HEUmtEvGn7zTArPFe6IGnYYID3jjhQK_iwtP2G_rawgQLa52_68YRCVWzYjfPyptYEJmoGu-kDlTsmNoJ26S'}, {'des': '首先上一首 Python 之禅:我从 2015 年 3 月第一次接触 Python 这门语言(之前一直写 ' 'PHP),就对其简洁…', 'origin': '知乎', 'time': '2019 年 3 月 28 日', 'title': '你都用 Python 来做什么? - 知乎', 'type': 'result', 'url': 'http://www.baidu.com/link?url=9Yve5ybsv1wP2WlxkOqO0z7wa_DaY__D1bTMLOaxT_UAqayv9RVWNHOjo68Hj1GycG5KSNutW6ofYdO4pYsjrTBz3Pe4hl-yQRxMtOfiWES'}, {'des': 'Python 是由创始人贵铎范罗萨姆(Guido van ' 'Rossum)在阿姆斯特丹于 1989 年圣诞节期间,为了打发圣诞节的无趣,开发的一个新的解释型脚本语言。', 'origin': 'www.yunweipai.com/python', 'time': '2019 年 4 月 25 日', 'title': 'Python 教程 - 运维派', 'type': 'result', 'url': 'http://www.baidu.com/link?url=px_zi74_EXc23TEOILqPGQfW49CRQv448R7MXLXGQiV-HQNiuxW8sYGRhasJSOVp'}, {'des': '这套 Python 基础教程通俗易懂,深入浅出,旨在帮助大家快速入门。这套 Python 教程虽然学习门槛低,但是知识体系很丰富,并且包含了大量实例,让大家学以致用。', 'origin': 'c.biancheng.net/python', 'time': None, 'title': 'Python 基础教程,Python 入门教程(非常详细)_C 语言中文网', 'type': 'result', 'url': 'http://www.baidu.com/link?url=etpIrqd8bVpZzDq54FotETIfGChVtHeVAjLjdVHgdFSyN-jvo421D01Tdjt7FsJ9'}, {'des': 'Python 100 例 以下实例在 Python2.7 下测试通过: Python 练习实例 1 Python ' '练习实例 2 Python 练习实例 3 Python 练习实例 4 Python 练习实例 5 Python ' '练习实例 6 Python...', 'origin': 'www.runoob.com/python/python-1...', 'time': None, 'title': 'Python 100 例 | 菜鸟教程', 'type': 'result', 'url': 'http://www.baidu.com/link?url=pMlhzHAsK3rai-RLPA0nY_s1nahEjH5nrkPw23lbXbCUWeV0moA3vvMfa0wTSSpJ0FUjizbPCEq0d_lIFiGiHK'}], 'total': 10} 

    更详细的新手教程可在文档中找到。


    开发人员


    samzhangjy samzhangjy , 现任 OIer,业余 Python Coder 。BaiduSpider 作者,主要代码贡献者。

    陈绍坤 陈绍坤 , Web 开发者,编程爱好者,12 岁,擅长 Flask 。BaiduSpider 代码贡献者。



    维护 BaiduSpider


    如果你想要参与 BaiduSpider 的维护工作,我将十分感激!维护的方式多种多样,可以通过提交新的 issue,可以为新手解答 issue,甚至提交一个 PR


    关于速度


    本项目的执行速度很大情况下取决于你所在地区的网速。本项目的解析时间约为 0.3 ~ 0.4 秒,若将exclude设为['all'],即仅解析普通结果,解析时间约为 0.2 秒。如果你想要测试解析速度,可以将执行BaiduSpider.parse_web的时间记录下来。详细使用请见注释,由于是内部函数,将不会出现在文档中。


    特别致谢


    • 感谢requests提供爬虫的 HTTP 获取网页的支持

    • 感谢MkDocsMaterial for MkDocs提供的精致的文档框架

    • 感谢Vue这个强大的前端框架,为 BaiduSpider 的前端提供了强有力的支持

    • 感谢所有对 BaiduSpider 提交错误报告,解答 issue,和提交 PR 的你们!

    23 条回复    2021-03-31 13:44:01 +08:00
    tikazyq
        1
    tikazyq  
       2021-03-19 19:05:54 +08:00
    给大佬倒波波茶
    samzhangjy
        2
    samzhangjy  
    OP
       2021-03-19 19:08:46 +08:00
    @tikazyq 不是大佬……(其实我才六年级,还请多关照……
    yuhangch
        3
    yuhangch  
       2021-03-19 19:44:51 +08:00
    @samzhangjy 给弟弟倒杯茶哈哈
    supersu
        4
    supersu  
       2021-03-19 20:10:32 +08:00 via Android
    资瓷一个
    tousfun
        5
    tousfun  
       2021-03-0 00:29:17 +08:00 via iPhone
    后生可畏
    hlwjia
        6
    hlwjia  
    PRO
       2021-03-20 00:33:26 +08:00
    12 岁??? 我 12 岁的时候估计还不懂事
    eason1874
        7
    eason1874  
       2021-03-20 00:57:41 +08:00
    12 岁???我 12 岁的时候在装扮 QQ 空间,拖拽功能模块对页面进行排版,四舍五入跟会 python 的楼主差不多吧(不是

    很少用百度,回复以表敬意。
    webshe11
        8
    webshe11  
       2021-03-20 01:28:34 +08:00   6
    大概看了一下代码,好像用的是手动解析 HTML 的方法?
    其实百度的搜索结果可以用 JSON 格式返回,几年前我玩过两下,刚才试了一下还能用

    https://www.baidu.com/s?wd=Python&pn=0&rn=20&tn=json

    记得和普通返回结果略有差别,另外不知道支持不支持图片、知道、视频、文库这些乱七八糟的,楼主可以试试,仅供参考
    MASAILA
        9
    MASAILA  
       2021-03-20 02:21:49 +08:00 via iPhone
    12 岁 太强了
    THP301
        10
    THP301  
       2021-03-20 02:38:25 +08:00
    12 岁未成年做爬虫应该比成年人安全一些吧
    cnrting
        11
    cnrting  
       2021-03-20 06:23:29 +08:00 via iPhone
    12 ??倒过来吧
    QingStone
        12
    QingStone  
       2021-03-20 07:05:08 +08:00 via iPhone
    @THP301 #10 我觉得你应该要加个狗头
    samzhangjy
        13
    samzhangjy  
    OP
       2021-03-20 08:16:23 +08:00 via iPhone
    @webshe11 谢谢!我一会试验一下
    samzhangjy
        14
    samzhangjy  
    OP
       2021-03-20 08:19:43 +08:00 via iPhone
    另外由于我的铜币并不多,就不一一回复了,但是谢谢大家!还有,开发人员那块 samzhangjy 是我(项目发起者,主要贡献者),陈绍坤是另外一个非常厉害的六年级小学生(项目 collaborator ),大家可以去知乎关注他~
    AndyAO
        15
    AndyAO  
       2021-03-20 11:07:30 +08:00
    如果我是楼主,最讨厌看到的就是关于年龄的感慨,因为毫无价值。
    samzhangjy
        16
    samzhangjy  
    OP
       2021-03-20 11:19:15 +08:00
    @AndyAO 是的。我并不希望别人把我当成小孩子看待,尤其是在开发界,年龄是无关紧要的。我为什么要提呢?因为另一个开发者比较关注,希望他不要看到这个回复……
    Mrxx
        17
    Mrxx  
       2021-03-20 14:53:18 +08:00
    年龄无关紧要
    但我要强调我只有 12 岁
    让大家夸我好厉害

    好厉害
    newworld
        18
    newworld  
       2021-03-20 15:05:32 +08:00
    @samzhangjy 咋发现的
    PeacePeach
        19
    PeacePeach  
       2021-03-20 17:46:58 +08:00 via iPhone
    6 年级,12 岁,少年有为
    samzhangjy
        20
    samzhangjy  
    OP
       2021-03-20 17:56:35 +08:00 via iPhone
    @Mrxx @PeacePeach 我不知道你是怎么想的。只是随口一提年龄罢了,更何况在开发人员那一栏里我完全没有提到我的年龄。好吧,主页我说了。那不是很正常嘛?我只是想交一些志同道合的朋友罢了,另一个开发者就是因为他写的一个回答我们才认识的。你们可以不 star,但是完全没有必要这么喷啊?这只是一个交流平台,我宣传一下自己的项目罢了。我从来没有说年龄很重要。为什么你们不去喷那些说自己是大学生团队开发的深度学习项目呢?奇怪。
    lasuar
        21
    lasuar  
       2021-03-22 10:04:14 +08:00
    鼓励鼓励!
    enki0423
        22
    enki0423  
       2021-03-24 09:11:59 +08:00 via iPhone
    厉害,我六年级还在玩泥巴,加油
    OwO233
        23
    OwO233  
       2021-03-31 13:44:01 +08:00
    这个没有必要喷。喷的人是嫉妒吧?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     929 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:34 PVG 02:34 LAX 10:34 JFK 13:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86