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
相关文章
|
5月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
6月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
5月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
6月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
929 19
|
5月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
5月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
6月前
|
数据采集 存储 Web App开发
处理Cookie和Session:让Python爬虫保持连贯的"身份"
处理Cookie和Session:让Python爬虫保持连贯的"身份"
|
6月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略
|
6月前
|
数据采集 网络协议 API
协程+连接池:高并发Python爬虫的底层优化逻辑
协程+连接池:高并发Python爬虫的底层优化逻辑
|
6月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。

推荐镜像

更多