一、环境
OS:win10
python:3.6
scrapy:1.3.2
pymongo:3.2
pycharm
环境搭建,自行百度
二、本节内容说明
上节内容主要抓取非小号收录的所有数字货币的详情链接和数字货币名称,本节内容,我们就要抓取每一种数字货币的基本信息了。
每一种数字货币的详情页都包含了许多信息,包括:名称、市值、流通量、价格支持的交易所、区块浏览器等等,如下图:
红框内的内容就是我们今天要抓取的内容。
三、数据库说明1. 货币详情
设计数字货币详情的数据结构,如下:
对应抓取到的结果如下图:
四、抓取说明1. MongoDBPipeline定义
在pipelines.py文件里面添加如下类:
为了防止数据重复写入,所以在写入数据之前要判断数据库里面是否已经存储了对应的信息,如果已经存储了,那么更新对应的信息,如果没有存储,直接插入。
2. 页面分析
查看页面的信息,可以发现所有的数字货币的信息都在一个id为baseInfo的div元素里面:
首先,我们来看和市场相关的信息,在第一个子div里面,class名称为firstPart:
这个里面包含了数字货币当前的价格,24小时的最高价和最低价以及详情描述。其中详情描述又需要到另外一个详情页面才能看到具体的信息:
而流通市值,流通量以及24小时成交额都可以在对应的div里面拿到:
我们再来看数字货币的名称,上架的交易所,白皮书,网站以及区块站信息,都在下方一个列表里面:
3. 具体实现
当前价格信息就是coinprice的class里面,
直接定位到这个div,然后使用正则表达式进行匹配,代码如下:
最低价格和最高价格在lowheight的class里面,
也可以直接使用一个正则表达式进行提取,代码如下:
如之前所说,描述信息需要到另外一个页面进行抓取,那么我们需要先获得另外一个页面的链接,然后再从另外一个页面提取详情信息,代码如下:
市场信息都在对应的div里面,所以可以一次性进行匹配提取,代码如下:
列表里面的基本信息处理起来就相对麻烦一些,其中区块站和网站都不止一个,所以我们需要用数组的方式进行存储,相关代码如下:
5. 抓取过程
基本代码已经在文中贴出,写的比较乱,欢迎大家一起讨论。
抓取到的信息大致如下:
如有疑问,请在公众号内沟通,谢谢!
领取专属 10元无门槛券
私享最新 技术干货