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

Python爬虫新手教程:微医挂号网医生数据抓取 1. 写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为pyppeteer 和 pyquery 首先找到 医生列表页 https://www.guahao.com/expert/all/全国/all/不限/p5 这个页面... 阅读详情

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 += 1
            await 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+=1
            await 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. 写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为pyppeteer 和 pyquery 首先找到 医生列表页 https://www.guahao.com/expert/all/全国/all/不限/p5 这个页面... 阅读详情

相关推荐

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

今天要抓取的一个网站叫做`微医`网站,地址为 `https://www.guahao.com` ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为`pyppeteer` 和 `pyquery`首先找到 医生列表页 https://www.guahao.com/expert/all/全国/all/不限/p5 这个页面显示有 **75952** 条数据 ,实际测试中,翻页到第38页,数据就加载不出来了,目测后台程序猿没有

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

Python_爬虫_爬取好大夫网站_数据清洗部分

1.前言 通过对好大夫网站内容的爬取,我们已经收集到好大夫的相关数据,并将其存入excel表中。之所以先存入excel表中,是因为有很多是非结构化数据,需要进行数据清理后在进行保存,excel中有很多的功能能够帮助进行数据清理,下图是获取的数据示例,一共获得20多万条数据。接下来进行数据清洗工作。 2.数据清洗规则 爬虫爬取的内容为: 姓名_title 医院 科室 医生主页url 患者投票 ...

越吃越胖的博客 9307

在线医院预约数据抓取:使用Python爬虫获取医生信息与可预约时间

本文介绍了如何使用Python编写爬虫,抓取在线医院预约平台的医生信息与可预约时间数据。通过使用。

2201_76125261的博客 1483

【Python爬虫】之 抓取“微医”上的医生信息

1.爬虫设计 本文用Python语言实现网络爬虫抓取特定数据,使用Beautiful Soup进行HTML的解析。Beautiful Soup是一个HTML/XML解析器,主要功能是解析和提取HTML/XML中的数据,提取数据时,类似于正则表达式的功能。Beautiful Soup将整个文档载入,解析整个DOM树,其时空开销都比较大,性能不如lxml。Beautiful Soup为不同的解析器提...

一定要站在自己热爱的生活里闪闪发光 4万+

爬取好大夫网.py

仅仅只是教学源码,并非专业爬虫 所用到库,requests,bs4,re,json,time,os 代码可运行,可适当根据自身情况调整爬取频率,即 time.sleep() 中的间隔时间

爬取【医疗问答】数据

本文章以 丁香 医生为例 主要以 科目分类来进行爬取,每个科目爬取的内容会存储到一个文本文档中,内容是问答式。 代码如下: from bs4 import BeautifulSoup import pandas as pd import json import requests import time import random def get_static_url_content(url): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, l

python爬取好大夫在线网

前言 好大夫在线网(https://www.haodf.com),是封ip的,当然通过(高匿)代理IP一般就能解决。but恶心的地方在于该站使用了知道创宇的云拦截,能够获取机子的真实ip,使用代理ip并没有什么卵用。 爬取源及爬取内容 爬取源是11万条医生页面的url,获取页面的一些访问信息。 目录结构 代码 import requests from lxml import etree i...

Yeoman92的博客 1万+

Python pydub实现语音停顿切分

将pcm文件批量处理成wav文件 import wave import os filepath = "data/" # 添加路径 filename = os.listdir(filepath) # 得到文件夹下的所有文件名称 #f = wave.open(filepath + filename[1], 'rb') #print(filename) for i in range(len(fi...

wangqianqianya的博客 1万+

Python爬取国家医保平台公开数据

接口地址:/ebus/fuwu/api/nthl/api/CommQuery/queryFixedHospital。签名参数:signData。

cow66的博客 8363

2023-12-26~2025-07-04备份

一、海康视觉与汇川机器人 服务器-客户端通信设置IP在同一网段名称IP端口类型海康相机工控机7930服务器机器人3000客户端海康VM服务器设置1通信管理 增添TCP服务端,设置本机IP:192.168.0.20,端口号79302 协议解析 通信双方约定通信格式(设置收发数据格式,分隔符)机器人客户端设置(不同类型机器人设置有差别)1 通讯服务设置 设置连接服务器IP、服务端端口号、机器人端口号,确保连接正常2 协议解析 使用指令代码构建通讯解析。

青铜小码农 3131

揭秘 Chat Template 如何驱动 AI Agent?以Qwen3为例详解LLM的聊天模板

bos_token: null (没有使用特殊的文档开始符)eos_token<|im_end|>(作为每个对话回合的结束符)pad_token: 对话回合开始<|im_end|>: 对话回合结束非特殊但关键的控制 Token (在词汇表中定义): 包裹模型生成的工具调用请求。: 包裹外部工具返回的执行结果。<think></think>: 包裹模型的内部思考或推理过程。

ljp1919的专栏 1353

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

1. 微医挂号网医生数据写在前面今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为pyppeteer 和 pyquery首先找到 医生列表页https://www.guahao.com/expert/all/全国/all/不限/p5这...

weixin_39558221的博客 817

从零构建NVENC编码器:一个游戏开发者的实战手册

本文详细介绍了如何从零构建NVENC编码器,特别针对游戏开发者提供实战指南。内容涵盖NVENC基础概念、DirectX纹理捕获、异步编码优化及高级特性配置,帮助开发者高效集成硬件编码技术到游戏引擎中,实现高性能游戏录制和直播功能。重点解析了NVIDIA专用编码芯片的优势与API使用技巧。

weixin_29292431的博客 366

Python微医挂号网医生数据抓取

1. 写在前面 今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为pyppeteer 和 pyquery 首先找到 医生列表页 https://www.guahao.com/expert/all/全国/all/不限/p5 这个页面显...

人生苦短, 还不用Python? 833

FastAPI + React:现代 Web 前后端分离开发的全栈实践指南

• 部署:CI/CD 双流水线,前端 push → GitHub Actions → Cloudflare Pages;• 后端:分层结构 routers → services → repositories → models,单测覆盖率 90 %。• 接口缓存:Redis + FastAPI Depends 实现接口级缓存,读 QPS 提升至 5 k。• 前端:BFF 由 React Query 代理,统一缓存、重试、分页。GET /items/{id} 详情。,前端同学无需等 Mock 即可联调。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1494

LeRobot 入门教程(一)软件环境、部署流程及摄像头配置

🤖 LeRobot:开源机器人学习平台 摘要:LeRobot是一个基于PyTorch的开源机器人学习平台,提供模型、数据集和工具,旨在降低机器人技术门槛。平台包含经过验证的模仿学习和强化学习方法,并提供预训练模型、人类演示数据集及模拟环境。安装需从源码获取,支持Python 3.10环境,可选扩展包括仿真环境(如gym-aloha)、电机控制(Dynamixel/Feetech SDK)和实验跟踪(Weights & Biases)。该平台托管在HuggingFace,并设有社区Discord频道

2506_90492529的博客 3418

爬微医挂号网并把数据导入oracle数据库

用pycharm,并非原创,参考马小酥的博客,python小白,初入爬虫 –记录学习过程 引用的库: import requests from bs4 import BeautifulSoup import codecs, sys import re import cx_Oracle 2.连接oracle conn= cx_Oracle.connect('用户名', '密码', '主机ip/oracle的service_name',encoding='utf8') #必须有encoding='

qq_43710766的博客 1446

ANSYS WORKBENCH——参数化建模以及参数优化(结果导出为Excel)

目录 1、打开软件workbench 2、找到static structure,双击打开 3、选择材料 4、参数化建模 ​ 注:印记面的创建 5、模型属性设置 注:设置优化目标 6、回主界面,选择direct optimization模块 1、打开软件workbench 2、找到static structure,双击打开 3、选择材料 4、参数化建模 至此参数化建模就已经完成啦 注:印记面的创建 印记面一般是一个虚拟的区域,参与实际的网格划分,但是只是由于载.

python_AI_fans的博客 1万+

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

1. 写在前面今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为pyppeteer 和 pyquery首先找到 医生列表页这个页面显示有75952条数据 ,实际测试中,翻页到第38页,数据就加载不出来了,目测后台程序猿没有把数据返回,...

weixin_39683025的博客 285

基于深度学习的垃圾邮件识别

垃圾邮件的大量存在严重威胁着电子邮件系统的安全和效率。基于深度学习的垃圾邮件识别技术已经成为目前最有效的解决方案之一。本文将详细介绍使用深度学习技术进行垃圾邮件识别的方法,并提供相应的代码实现。 随着电子邮件的广泛应用,垃圾邮件的数量不断增加,传统的规则和统计方法已经无法满足对垃圾邮件进行准确识别的需求。深度学习技术以其强大的模式识别能力和自动特征提取能力成为解决垃圾邮件识别难题的有效工具。

一键难忘的博客 1095

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

service数据保存_Python爬虫入门教程第二十讲: 微医挂号网医生数据抓取

1. 写在前面今天要抓取的一个网站叫做微医网站,地址为 https://www.guahao.com ,我们将通过python3爬虫抓取这个网址,然后数据存储到CSV里面,为后面的一些分析类的教程做准备。本篇文章主要使用的库为pyppeteer 和 pyquery首先找到 医生列表页https://www.guahao.com/expert/all/全国/all/不限/p5这个页面显示有 7595...

weixin_39533174的博客 103

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Python爬虫新手教程:手机APP数据抓取 pyspider!
下一篇: 利用Python自动化生成逼格高的日历!简单又实用!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值