如何构建Python技能树并高效运用pyspider框架?

2026-06-09 11:242阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计983个文字,预计阅读时间需要4分钟。

如何构建Python技能树并高效运用pyspider框架?

pyspider 实战案例:微医挂号网专家团队数据,今天尝试使用一个新爬虫库进行数据爬取,这个库叫 pyspider,是国人开发的,目前支持以下功能。GitHub 地址:https://github.com/binux/pyspider 官方文档

pyspider 实战案例微医挂号网专家团队数据

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

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

安装起来是非常简单的

pip install pyspider

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

pyspider

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

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

3步创建一个项目

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

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

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

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

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

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

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

爬虫流程

  • 获取总页数
  • 循环爬取每页的数据
  • 爬取总页数

    在入口函数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('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('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 按钮执行

    如何构建Python技能树并高效运用pyspider框架?

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

    等着就可以了

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

  • Web UI 控制台上的 rate/burst 参数来调节速度,rate 是 每秒抓取的数量,burst 是并发的数量
  • pyspider 爬取完毕之后,你在点击run是不会在运行的。解决办法如下,停止 pyspider,找到下图的几个文件project.db 和 result.db 两个文件不要删除,删除其他文件即可。
  • 写完啦~ 得到了 ·1000·多个专家团队。

    本文共计983个文字,预计阅读时间需要4分钟。

    如何构建Python技能树并高效运用pyspider框架?

    pyspider 实战案例:微医挂号网专家团队数据,今天尝试使用一个新爬虫库进行数据爬取,这个库叫 pyspider,是国人开发的,目前支持以下功能。GitHub 地址:https://github.com/binux/pyspider 官方文档

    pyspider 实战案例微医挂号网专家团队数据

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

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

    安装起来是非常简单的

    pip install pyspider

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

    pyspider

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

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

    3步创建一个项目

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

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

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

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

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

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

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

    爬虫流程

  • 获取总页数
  • 循环爬取每页的数据
  • 爬取总页数

    在入口函数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('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('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 按钮执行

    如何构建Python技能树并高效运用pyspider框架?

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

    等着就可以了

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

  • Web UI 控制台上的 rate/burst 参数来调节速度,rate 是 每秒抓取的数量,burst 是并发的数量
  • pyspider 爬取完毕之后,你在点击run是不会在运行的。解决办法如下,停止 pyspider,找到下图的几个文件project.db 和 result.db 两个文件不要删除,删除其他文件即可。
  • 写完啦~ 得到了 ·1000·多个专家团队。