博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫入门教程 27-100 微医挂号网专家团队数据抓取pyspider
阅读量:4653 次
发布时间:2019-06-09

本文共 2475 字,大约阅读时间需要 8 分钟。

1. 微医挂号网专家团队数据----写在前面

今天尝试使用一个新的爬虫库进行数据的爬取,这个库叫做pyspider,国人开发的,当然支持一下。

github地址: https://github.com/binux/pyspider

官方文档地址:http://docs.pyspider.org/en/latest/

安装起来是非常简单的

pip install pyspider

安装之后,启动 在CMD控制台里面敲入命令

pyspider

出现如下界面,代表运行成功,一般情况下,你的电脑如果没有安装 phantomjs 他会先给你安装一下。

在这里插入图片描述

接下来打开浏览器,访问地址输入 127.0.0.1:5000, 应该显示如下界面,就可以愉快的进行编码了~

在这里插入图片描述

3步创建一个项目

在这里插入图片描述

2. 微医挂号网专家团队数据----库基本使用入门

这款工具的详细使用,给你提供一个非常好的博文,写的很完善了,我就不在赘述了。咱们直接进入到编码的部分。

https://blog.csdn.net/weixin_37947156/article/details/76495144

3. 微医挂号网专家团队数据----爬虫源码

我们要爬取的目标站点是微医挂号网专家团队数据 网页地址https://www.guahao.com/eteam/index

在这里插入图片描述

分析AJAX链接地址,寻找爬取规律

在这里插入图片描述

经过分析之后获取到的链接为 https://www.guahao.com/json/white/search/eteams?q=&dept=&page=2&cid=&pid=&_=1542794523454

其中page参数最重要,表示页码,实际测试中发现,当代码翻页到 84页的时候,数据竟然开始重复了,应该是网站本身系统的问题,这个没有办法。

爬虫流程

  1. 获取总页数
  2. 循环爬取每页的数据
爬取总页数

在入口函数on_start的位置去爬取第一页数据,爬取成功之后调用index_page函数

from pyspider.libs.base_handler import *import pandas as pdclass Handler(BaseHandler):    crawl_config = {    }    @every(minutes=24 * 60)    def on_start(self):        self.crawl('https://www.guahao.com/json/white/search/eteams?page=1', callback=self.index_page,validate_cert=False)

index_page函数用来获取页码总数,并且将所有待爬取的地址存放到self.crawl中,这个地方因为数据重复的原因,最终硬编码为84页数据了

@config(age=10 * 24 * 60 * 60)    def index_page(self, response):        doctors = response.json        if doctors:            if doctors["data"]:                page_count = doctors["data"]["pageCount"]                #for page in range(1,page_count+1):                for page in range(1,85):                    self.crawl('https://www.guahao.com/json/white/search/eteams?page={}'.format(page),callback=self.detail_page,validate_cert=False)

最后一步,解析数据,数据爬取完毕,存放到 csv 文件里面

@config(priority=2)    def detail_page(self, response):        doctors = response.json        data = doctors["data"]["list"]        return data        def on_result(self,result):        if result:            print("正在存储数据....")            data = pd.DataFrame(result)            data.to_csv("专家数据.csv", mode='a', header=False, encoding='utf_8_sig')

完成的代码预览

在这里插入图片描述

回到主页面,此时看到任务列表显示了我们刚刚创建的任务,设置 status 为 running,然后点击 Run 按钮执行

在这里插入图片描述

执行完成后,点击 Results 按钮,进入到爬取结果的页面

在这里插入图片描述

等着就可以了

4. 微医挂号网专家团队数据----最后几步

  1. Web UI 控制台上的 rate/burst 参数来调节速度,rate 是 每秒抓取的数量,burst 是并发的数量

在这里插入图片描述

  1. pyspider 爬取完毕之后,你在点击run是不会在运行的。解决办法如下,停止 pyspider,找到下图的几个文件
    project.db 和 result.db 两个文件不要删除,删除其他文件即可。

在这里插入图片描述

写完啦~ 得到了 ·1000·多个专家团队。

1686dcaabbef8707?w=261&h=264&f=png&s=43931

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1lpoi2p6fcu88

转载于:https://www.cnblogs.com/happymeng/p/10296977.html

你可能感兴趣的文章
面向对象1
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>
函数名作为参数传递
查看>>
apt-get for ubuntu 工具简介
查看>>
数值计算算法-多项式插值算法的实现与分析
查看>>
day8-异常处理与网络编程
查看>>
Python基础-time and datetime
查看>>
Linux epoll 笔记(高并发事件处理机制)
查看>>
shell脚本练习01
查看>>
WPF图标拾取器
查看>>
通过取父级for循环的i来理解闭包,iife,匿名函数
查看>>
HDU 3374 String Problem
查看>>
数据集
查看>>
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>