1. 写在前面

今天要抓取的一个网站叫做 微医 网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为 pyppeteer 和 pyquery

首先找到 医生列表页

Python资源共享群:484031800

https://www.guahao.com/expert/all/全国/all/不限/p5

这个页面显示有 75952 条数据 ,实际测试中,翻页到第38页,数据就加载不出来了,目测后台程序猿没有把数据返回,不过为了学习,我们忍了。

2. 页面URL

https://www.guahao.com/expert/all/全国/all/不限/p1
https://www.guahao.com/expert/all/全国/all/不限/p2
...
https://www.guahao.com/expert/all/全国/all/不限/p38

数据总过38页,量不是很大,咱只需要随便选择一个库抓取就行,这篇博客,我找了一个冷门的库

pyppeteer 在使用过程中,发现资料好少,很尴尬。而且官方的文档写的也不好,有兴趣的可以自行去看看。关于这个库的安装也在下面的网址中。

https://miyakogi.github.io/pyppeteer/index.html

最简单的使用方法,在官方文档中也简单的写了一下,如下,可以把一个网页直接保存为一张图片。

import asyncio
from pyppeteer import launch
async def main():browser = await launch()  # 运行一个无头的浏览器page = await browser.newPage()  # 打开一个选项卡await page.goto('http://www.baidu.com')  # 加载一个页面await page.screenshot({'path': 'baidu.png'})  # 把网页生成截图await browser.close()
asyncio.get_event_loop().run_until_complete(main())  # 异步
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

我整理了下面的一些参考代码,你可以 做一些参考。

browser = await launch(headless=False)  # 可以打开浏览器
await page.click('#login_user')  # 点击一个按钮
await page.type('#login_user', 'admin')  # 输入内容
await page.click('#password')
await page.type('#password', '123456')
await page.click('#login-submit')
await page.waitForNavigation()
# 设置浏览器窗口大小
await page.setViewport({'width': 1350,'height': 850
})
content = await page.content()  # 获取网页内容
cookies = await page.cookies()  # 获取网页cookies

3. 爬取页面

运行下面的代码,你就可以看到控制台不断的打印网页的源码,只要获取到源码,就可以进行后面的解析与保存数据了。如果出现控制不输出任何东西的情况,那么请把下面的

await launch(headless=True) 修改为 await launch(headless=False)

import asyncio
from pyppeteer import launch
class DoctorSpider(object):async def main(self, num):try:browser = await launch(headless=True)page = await browser.newPage()print(f"正在爬取第 {num} 页面")await page.goto("https://www.guahao.com/expert/all/全国/all/不限/p{}".format(num))content = await page.content()print(content)except Exception as e:print(e.args)finally:num += 1await browser.close()await self.main(num)def run(self):loop = asyncio.get_event_loop()asyncio.get_event_loop().run_until_complete(self.main(1))
if __name__ == '__main__':doctor = DoctorSpider()doctor.run()

4. 解析数据

解析数据采用的是pyquery ,这个库在之前的博客中有过使用,直接应用到案例中即可。最终产生的数据通过 pandas 保存到CSV文件中。

import asyncio
from pyppeteer import launch
from pyquery import PyQuery as pq
import pandas as pd  # 保存csv文件
class DoctorSpider(object):def __init__(self):self._data = list()async def main(self,num):try:browser = await launch(headless=True)page = await browser.newPage()print(f"正在爬取第 {num} 页面")await page.goto("https://www.guahao.com/expert/all/全国/all/不限/p{}".format(num))content = await page.content()self.parse_html(content)print("正在存储数据....")data = pd.DataFrame(self._data)data.to_csv("微医数据.csv", encoding='utf_8_sig')except Exception as e:print(e.args)finally:num+=1await browser.close()await self.main(num)def parse_html(self,content):doc = pq(content)items = doc(".g-doctor-item").items()for item in items:#doctor_name = item.find(".seo-anchor-text").text()name_level = item.find(".g-doc-baseinfo>dl>dt").text() # 姓名和级别department = item.find(".g-doc-baseinfo>dl>dd>p:eq(0)").text() # 科室address = item.find(".g-doc-baseinfo>dl>dd>p:eq(1)").text()  # 医院地址star = item.find(".star-count em").text()  # 评分inquisition = item.find(".star-count i").text() # 问诊量expert_team = item.find(".expert-team").text()  # 专家团队service_price_img = item.find(".service-name:eq(0)>.fee").text()service_price_video = item.find(".service-name:eq(1)>.fee").text()one_data = {"name": name_level.split(" ")[0],"level": name_level.split(" ")[1],"department": department,"address": address,"star": star,"inquisition": inquisition,"expert_team": expert_team,"service_price_img": service_price_img,"service_price_video": service_price_video}self._data.append(one_data)def run(self):loop = asyncio.get_event_loop()asyncio.get_event_loop().run_until_complete(self.main(1))
if __name__ == '__main__':doctor = DoctorSpider()doctor.run()
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

总结一下,这个库不怎么好用,可能之前没有细细的研究过,感觉一般,你可以在多尝试一下,看一下是否可以把整体的效率提高上去。

数据清单:

Python爬虫新手教程:微医挂号网医生数据抓取!相关推荐

  1. python爬虫和医学数据_Python爬虫入门教程 24-100 微医挂号网医生数据抓取

    1. 微医挂号网医生数据写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的 ...

  2. Python爬虫入门教程 24-100 微医挂号网医生数据抓取

    1. 微医挂号网医生数据写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的 ...

  3. Python爬虫新手教程:微医挂号网医生数据抓取

    1. 写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做 ...

  4. Python爬虫教程:微医挂号网医生数据抓取

    1. 写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做 ...

  5. 医生学python_Python微医挂号网医生数据抓取

    1. 写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做 ...

  6. Python爬虫入门教程 18-100 煎蛋网XXOO图片抓取

    写在前面 很高兴我这系列的文章写道第18篇了,今天写一个爬虫爱好者特别喜欢的网站煎蛋网http://jandan.net/ooxx,这个网站其实还是有点意思的,网站很多人写了N多的教程了,各种方式的都 ...

  7. Python爬虫入门教程 18-100 煎x网XO图片抓取

    1. 煎x网XO-写在前面 本文涉及的网址请查看评论区 很高兴我这系列的文章写道第18篇了,今天写一个爬虫爱好者特别喜欢的网站煎x网 敏感站点 ,这个网站其实还是有点意思的,网站很多人写了N多的教程了 ...

  8. Python爬虫入门教程 15-100 石家庄政民互动数据爬取

    写在前面 今天,咱抓取一个网站,这个网站呢,涉及的内容就是 网友留言和回复,特别简单,但是网站是gov的.网址为 http://www.sjz.gov.cn/col/1490066682000/ind ...

  9. Python爬虫入门教程 19-100 51CTO学院IT技术课程抓取

    0. 51CTO学院写在前面 从今天开始的几篇文章,我将就国内目前比较主流的一些在线学习平台数据进行抓取,如果时间充足的情况下,会对他们进行一些简单的分析,好了,平台大概有51CTO学院,CSDN学院 ...

最新文章

  1. 程序员入错行怎么办?
  2. 饱和气压与温度的关系_凯米斯小课堂 | 溶解氧与水产养殖的关系
  3. 查看目标网站--结构
  4. 企业数字化转型与中台建设全攻略:什么阶段进行?采用哪些方法?
  5. 【python基础知识】error: Unable to find vcvarsall.bat--python3.5+windows7
  6. 【非线性声学】——声辐射力
  7. SqlServer的分割函数
  8. docker 系列 - 基础镜像环境和Docker常用命令整理
  9. 高通modem启动过程_使用QXDM收集高通modem日志
  10. t470键盘拆解_做工保持良好水准 ThinkPad T470笔记本拆机解析
  11. C++ 遍历json文件
  12. 第九节 html特殊文字符号
  13. 目前最值得购买的两种上网神器?看完你会选择哪一款?
  14. mscorsvw.exe占内存解决方案
  15. word文档无法编辑的解决办法
  16. App陷阱防不胜防:欺骗误导用户下载App、欺骗误导用户提供个人信息
  17. math_基本初等函数图型(幂函数/指数/对数/三角/反三角)
  18. 【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-01周边站点
  19. 最新美团代付源码+支持多模板/多支付通道/全开源
  20. js实现简单的四则运算

热门文章

  1. OpenOffice在线预览文档
  2. 【数据分析】盘点五一期间最受欢迎的几个景区
  3. 什么是融资?怎么才能融资?如何实现个人融资?
  4. 秋招提前批面试汇总(嵌入式+c++面经)国电南自 vivo 乐鑫 中兴 大华 联发科 中科创达 腾讯 绿盟 速腾 科大讯飞 深信服 商汤 海康持续更新
  5. 星际争霸,FF反作弊对战平台
  6. Git .ignore 文件规则不生效
  7. windows下使用命令行运行PHP
  8. 寂寂的流年,时光日渐青翠
  9. 数据链路层的有那三个基本问题?为什么都必须加以解决?
  10. 2. 英特尔格式与摩托罗拉格式对比