国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python微醫掛號網醫生數據抓取

2020-02-16 00:51:56
字體:
來源:轉載
供稿:網友

1. 寫在前面

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

首先找到 醫生列表頁

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 asynciofrom pyppeteer import launchasync 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()) # 異步

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

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 asynciofrom pyppeteer import launchclass 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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁武县| 台山市| 咸丰县| 苏州市| 阳西县| 济源市| 中卫市| 东平县| 米脂县| 平利县| 定日县| 蓝田县| 渝北区| 保靖县| 龙岩市| 鸡西市| 灵石县| 瓮安县| 连城县| 佛学| 武胜县| 孙吴县| 思茅市| 密云县| 清远市| 安龙县| 疏勒县| 富平县| 勐海县| 隆子县| 泸溪县| 阳泉市| 双流县| 十堰市| 霸州市| 垦利县| 始兴县| 土默特左旗| 保康县| 琼海市| 池州市|