爬虫开源工具GoPUP的介绍与使用

Posted 肉丸不肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫开源工具GoPUP的介绍与使用相关的知识,希望对你有一定的参考价值。

  1. 老师今天中午找我做一个任务: 爬虫+将爬到的数据可视化
  2. 老师指定我用 GoPUP 来获取数据,用 ECharts 来可视化成图表

一、 介绍

  1. GoPUP是GitHub中的一个开源工具,GoPUP项目所采集的数据皆来自公开的数据源,不涉及任何个人隐私数据和非公开数据。同时开发者指出本项目提供的数据接口及相关数据仅用于学术研究

  2. 项目地址为:https://github.com/justinzm/gopup。

  3. 此项目的核心思想:将各种数据接口做整合

二、使用方法(建议先浏览一遍文档)

使用方法很简单:先pip安装,再去文档中查找待爬取的数据仓库(接口API、相关属性等),最后获取数据

我使用的数据仓库为:百度搜索指数。所以详细介绍这个仓库的使用,其他仓库使用也很简单,直接看文档中的接口API即可。

具体需求为:爬取百度指数中 近十年 “铝” 这个关键词的搜索指数。

  1. 安装gopup:pip install gopup
  2. 在Anaconda Spyder 中输入爬虫代码:
import gopup as gp

cookie = 'BIDUPSID=31645A2D6B3E345D912F2D409B9F4473; PSTM=1617162454; BAIDUID=DD10994257CC1714887A6C499DC79B61:FG=1; BDUSS=RtdTVPSEhIeEFpcEVYRW1WZGQxMTFvMElYWEplQ0JuZnlRdUkzNWQwNlNzcEpnRVFBQUFBJCQAAAAAAAAAAAEAAAC0jBTozvvGqLXEv7zR0MK3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIla2CSJWtgd2; BDUSS_BFESS=RtdTVPSEhIeEFpcEVYRW1WZGQxMTFvMElYWEplQ0JuZnlRdUkzNWQwNlNzcEpnRVFBQUFBJCQAAAAAAAAAAAEAAAC0jBTozvvGqLXEv7zR0MK3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIla2CSJWtgd2; __yjs_duid=1_9e86b656b728c483c287648975d6b5221620119153430; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=33986_33813_31254_33848_33607_26350_22159; bdindexid=e30hju1f6dnf4ucu9as6b93hr6; Hm_lvt_d101ea4d2a5c67dab98251f0b5de24dc=1620711200,1620711701; BAIDUID_BFESS=8888642A7676253E5BD332123959953C:FG=1; Hm_lpvt_d101ea4d2a5c67dab98251f0b5de24dc=1620712626; ab_sr=1.0.0_NGJlYzUzYzRlYjc1NjlkYjhmNTE3ZDBkMWY0ZjYxNWI5YmZkOTY5MTM1OGNiMDU2YWNiNmIxODM3YzI5NjliNDA1ODk0NTYzOWQyZGY4NjY3MjU2YjcxMTQ4MWRjZDhj; __yjs_st=2_OGM2YWI3Y2IzMmZlZTg1YjY5MDA4M2UwYzlhYzlhNzRkYmJlMGMwZmE4ZmM3ZmY3MGI5Nzc4YzIxN2QwNWVjYTRhNWIxNjMxMTM5MzljMWI0OWNjYjMzYWM1N2UxYWFlYjk3ZmExMTllMzQ1ZmU3MGZiNjg1OWZkMDdhYWM5ZTA2ZTZhOGExNDNkYTBhOWQ2YzY4ZGMyNWNmYjIzZTg4MDFmYzZiNzFkODVhNDZkZGNjNjQ2MzUwMzJhZWY5MDgzYWU2ZjIyNmQ1ZmY1NThmMTRmYzgyNTZmMjBkNDFkOTg5MjQ3YzQ5Yjk1NzdkMWJjNWQxYjkxMDgxNjNiY2MxNV83XzA0NjhlNjNk; RT="sl=4&ss=kojm9zge&tt=3ln&bcn=https://fclog.baidu.com/log/weirwood?type=perf&z=1&dm=baidu.com&si=7facxkq2f6w&ld=6b9o&ul=6g0q"'

index_df = gp.baidu_search_index(word="铝", start_date='2020-05-10', end_date='2021-05-10', cookie=cookie)

print(index_df)

其中cookie的值为:在网页端登录百度指数后的 cookie 数据。具体获取方式如下:

三、使用时遇到的问题与解决方法

1. 直接复制文档里面的代码后,再将登录百度指数网站后得到的cookie复制过去时,报 语法错误。

问题分析与解决:

先看一下文档里给出百度搜索指数的代码:

import gopup as gp
cookie = "此处输入您在网页端登录百度指数后的 cookie 数据"
index_df = gp.baidu_search_index(word="口罩", start_date='2020-01-01', end_date='2020-03-01', cookie=cookie)
print(index_df)

直接复制这个就会报错。因为从百度指数网站获得的cokkie里面包含双引号,所以此处应该是单引号

正确的应该为:

import gopup as gp
cookie = '此处输入您在网页端登录百度指数后的 cookie 数据'
index_df = gp.baidu_search_index(word="口罩", start_date='2020-01-01', end_date='2020-03-01', cookie=cookie)
print(index_df)
2. 爬出的数据在spyder中显示不全。要将省略号的内容都显示出来。

如下图的问题:

问题分析与解决:

gopup爬到返回的数据类型为dataframe类型,对于这种类型的数据 循环遍历 输出要用 迭代器

详情请看这篇博客:https://blog.csdn.net/fisherming/article/details/105419315

总结就是用 iterrows迭代器

# 每一行返回一个2元素的元组
# 元组的第一个元素是该行的索引值
# 第二个元素是一个Series对象,该Series对象的值为剩余的行值
index_df = gp.baidu_search_index(word="铝", start_date='2020-05-10', end_date='2021-05-10', cookie=cookie)

for item in index_df.iterrows():
    print(item[0])

# 能获得 dataframe的第一列,在这里就是 时间。
for item in index_df.iterrows():
    print(item[1][0])

# 能获得 dataframe的第二列,在这里就是 搜索值。

四、优缺点:

  • 优点:三行代码即可获得爬到的数据。
  • 缺点:
  1. 不能单独指定爬取的粒度,比如我想要爬取百度指数中每一年的搜索值,而并非每天的(但是百度指数就是每天的)。所以只能原网站数据提供啥,我们爬到啥。

以上是关于爬虫开源工具GoPUP的介绍与使用的主要内容,如果未能解决你的问题,请参考以下文章

GitHub 上高星的爬虫项目

massCode 一款优秀的开源代码片段管理器

源代码管理工具GitHub介绍

源代码管理工具GitHub介绍

Python开源爬虫框架scrapy的了解与认识

主流源代码工具Github的介绍