最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python微醫(yī)掛號(hào)網(wǎng)醫(yī)生數(shù)據(jù)抓取

 更新時(shí)間:2019年01月24日 11:06:39   作者:Python新世界  
今天小編就為大家分享一篇關(guān)于Python微醫(yī)掛號(hào)網(wǎng)醫(yī)生數(shù)據(jù)抓取,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

1. 寫在前面

今天要抓取的一個(gè)網(wǎng)站叫做微醫(yī)網(wǎng)站,地址為 https://www.guahao.com ,我們將通過python3爬蟲抓取這個(gè)網(wǎng)址,然后數(shù)據(jù)存儲(chǔ)到CSV里面,為后面的一些分析類的教程做準(zhǔn)備。本篇文章主要使用的庫為pyppeteer 和 pyquery

首先找到 醫(yī)生列表頁

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

這個(gè)頁面顯示有 75952 條數(shù)據(jù) ,實(shí)際測試中,翻頁到第38頁,數(shù)據(jù)就加載不出來了,目測后臺(tái)程序猿沒有把數(shù)據(jù)返回,不過為了學(xué)習(xí),我們?nèi)塘恕?/p>

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

數(shù)據(jù)總過38頁,量不是很大,咱只需要隨便選擇一個(gè)庫抓取就行,這篇博客,我找了一個(gè)冷門的庫
pyppeteer 在使用過程中,發(fā)現(xiàn)資料好少,很尷尬。而且官方的文檔寫的也不好,有興趣的可以自行去看看。關(guān)于這個(gè)庫的安裝也在下面的網(wǎng)址中。

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

最簡單的使用方法,在官方文檔中也簡單的寫了一下,如下,可以把一個(gè)網(wǎng)頁直接保存為一張圖片。

import asyncio
from pyppeteer import launch
async def main():
  browser = await launch() # 運(yùn)行一個(gè)無頭的瀏覽器
  page = await browser.newPage() # 打開一個(gè)選項(xiàng)卡
  await page.goto('http://www.baidu.com') # 加載一個(gè)頁面
  await page.screenshot({'path': 'baidu.png'}) # 把網(wǎng)頁生成截圖
  await browser.close()
asyncio.get_event_loop().run_until_complete(main()) # 異步

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

browser = await launch(headless=False) # 可以打開瀏覽器
await page.click('#login_user') # 點(diǎn)擊一個(gè)按鈕
await page.type('#login_user', 'admin') # 輸入內(nèi)容
await page.click('#password') 
await page.type('#password', '123456')
await page.click('#login-submit')
await page.waitForNavigation() 
# 設(shè)置瀏覽器窗口大小
await page.setViewport({
  'width': 1350,
  'height': 850
})
content = await page.content() # 獲取網(wǎng)頁內(nèi)容
cookies = await page.cookies() # 獲取網(wǎng)頁cookies

3. 爬取頁面

運(yùn)行下面的代碼,你就可以看到控制臺(tái)不斷的打印網(wǎng)頁的源碼,只要獲取到源碼,就可以進(jìn)行后面的解析與保存數(shù)據(jù)了。如果出現(xiàn)控制不輸出任何東西的情況,那么請把下面的

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. 解析數(shù)據(jù)

解析數(shù)據(jù)采用的是pyquery ,這個(gè)庫在之前的博客中有過使用,直接應(yīng)用到案例中即可。最終產(chǎn)生的數(shù)據(jù)通過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("正在存儲(chǔ)數(shù)據(jù)....")
      data = pd.DataFrame(self._data)
      data.to_csv("微醫(yī)數(shù)據(jù).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() # 姓名和級(jí)別
      department = item.find(".g-doc-baseinfo>dl>dd>p:eq(0)").text() # 科室
      address = item.find(".g-doc-baseinfo>dl>dd>p:eq(1)").text() # 醫(yī)院地址
      star = item.find(".star-count em").text() # 評分
      inquisition = item.find(".star-count i").text() # 問診量
      expert_team = item.find(".expert-team").text() # 專家團(tuán)隊(duì)
      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()

總結(jié)一下,這個(gè)庫不怎么好用,可能之前沒有細(xì)細(xì)的研究過,感覺一般,你可以在多嘗試一下,看一下是否可以把整體的效率提高上去。

數(shù)據(jù)清單:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Python應(yīng)用自動(dòng)化部署工具Fabric原理及使用解析

    Python應(yīng)用自動(dòng)化部署工具Fabric原理及使用解析

    這篇文章主要介紹了Python應(yīng)用自動(dòng)化部署工具Fabric原理及使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 新手如何快速入門Python(菜鳥必看篇)

    新手如何快速入門Python(菜鳥必看篇)

    下面小編就為大家?guī)硪黄率秩绾慰焖偃腴TPython(菜鳥必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Python如何優(yōu)雅獲取本機(jī)IP方法

    Python如何優(yōu)雅獲取本機(jī)IP方法

    這篇文章主要介紹了Python如何優(yōu)雅獲取本機(jī)IP方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python 調(diào)整圖片亮度的示例

    python 調(diào)整圖片亮度的示例

    這篇文章主要介紹了python 調(diào)整圖片亮度的示例代碼,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • python使用Plotly繪圖工具繪制柱狀圖

    python使用Plotly繪圖工具繪制柱狀圖

    這篇文章主要為大家詳細(xì)介紹了python使用Plotly繪圖工具繪制柱狀圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python3 掃描庫文件并獲取版本號(hào)信息的操作方法

    Python3 掃描庫文件并獲取版本號(hào)信息的操作方法

    在 C/C++ 開發(fā)中使用了第三方庫,具體說是 .a, .lib, .dll 等文件,想通過 Python 查詢出這些文件中的版本號(hào)信息,下面小編給大家?guī)砹薖ython3中掃描庫文件并獲取版本號(hào)信息的知識(shí),需要的朋友可以參考下
    2023-05-05
  • selenium與xpath之獲取指定位置的元素的實(shí)現(xiàn)

    selenium與xpath之獲取指定位置的元素的實(shí)現(xiàn)

    這篇文章主要介紹了selenium與xpath之獲取指定位置的元素的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • keras如何指定運(yùn)行時(shí)顯卡及限制GPU用量

    keras如何指定運(yùn)行時(shí)顯卡及限制GPU用量

    這篇文章主要介紹了keras如何指定運(yùn)行時(shí)顯卡及限制GPU用量問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 淺析PyTorch中nn.Linear的使用

    淺析PyTorch中nn.Linear的使用

    這篇文章主要介紹了淺析PyTorch中nn.Linear的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 關(guān)于keras中的Reshape用法

    關(guān)于keras中的Reshape用法

    這篇文章主要介紹了關(guān)于keras中的Reshape用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

临朐县| 开江县| 南开区| 浦县| 中超| 武邑县| 黄骅市| 阿拉善右旗| 都昌县| 上思县| 宁化县| 永春县| 二连浩特市| 富阳市| 隆尧县| 彝良县| 贵州省| 蚌埠市| 公主岭市| 朝阳市| 民勤县| 仁化县| 孟津县| 开鲁县| 方山县| 疏附县| 盐池县| 岑溪市| 鸡泽县| 莱州市| 保德县| 宜宾县| 万载县| 射洪县| 桦甸市| 社旗县| 米脂县| 冷水江市| 教育| 石城县| 太白县|