Python爬虫入门教程 27-100 微医挂号网专家团队数据抓取pyspider

简介: 1. 微医挂号网专家团队数据----写在前面今天尝试使用一个新的爬虫库进行数据的爬取,这个库叫做pyspider,国人开发的,当然支持一下。github地址: https://github.com/binux/pyspider官方文档地址:http://docs.pyspider.org/en/latest/安装起来是非常简单的pip install pyspider 安装之后,启动 在CMD控制台里面敲入命令pyspider出现如下界面,代表运行成功,一般情况下,你的电脑如果没有安装 phantomjs 他会先给你安装一下。

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

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

github地址: https://github.com/binux/pyspider
官方文档地址:http://docs.pyspider.org/en/latest/

安装起来是非常简单的

pip install pyspider 

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

pyspider

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

image

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

image

3步创建一个项目

image

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

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

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

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

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

image

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

image

经过分析之后获取到的链接为 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 pd

class 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')
       

完成的代码预览
image

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

image

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

image

等着就可以了

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

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

image

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

image

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

image


更多内容,欢迎关注 https://dwz.cn/r4lCXEuL
相关文章
|
1月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
98 6
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
214 4
|
4月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
2月前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
206 66
|
1月前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
1月前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
66 4
|
2月前
|
数据采集 设计模式 算法
拥抱变化:从Python新手到专家的旅程
【10月更文挑战第5天】在编程的世界里,Python以其简洁明了的语法和强大的功能库成为了无数开发者的首选语言。本文将带你走进一个Python新手如何一步步成长为专家的故事,探索学习过程中的困惑、挑战以及最终的成就,并通过代码示例揭示学习之旅的关键时刻。
36 2
|
2月前
|
数据采集 JavaScript 前端开发
JavaScript逆向爬虫——使用Python模拟执行JavaScript
JavaScript逆向爬虫——使用Python模拟执行JavaScript
39 2
|
3月前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
3月前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。