医院(多线程)

from lxml import etree
from fake_useragent import UserAgent
import time
import json
import requests
import csv
import random
import codecs
import os
from multiprocessing.dummy import Pool
headers={
            'User-Agent':UserAgent().random
        }

url='https://www.bch.com.cn/Html/Hospitals/Departments/Overview0.html'
response=requests.get(url=url,headers=headers)
response.encoding = 'utf-8' 
page_text=response.text

tree=etree.HTML(page_text)
li=[]
# for i in range(1,49):
#     di={}
#     name=tree.xpath('/html/body/div/div[7]/div/div/ul[1]/li[{}]//text()'.format(i))[0]
#     url1=tree.xpath('/html/body/div/div[7]/div/div/ul[1]/li[{}]//@href'.format(i))[0]
#     url1="https://www.bch.com.cn"+url1
#     di["科室"]=name
#     di["URL"]=url1
#     li.append(di)
for i in range(1,3):#9
    di={}
    name=tree.xpath('/html/body/div/div[7]/div/div/ul[2]/li[{}]//text()'.format(i))[0]
    url1=tree.xpath('/html/body/div/div[7]/div/div/ul[2]/li[{}]//@href'.format(i))[0]
    url1="https://www.bch.com.cn"+url1
    if name!="医学伦理委员会":
        di["科室"]=name
        di["URL"]=url1
        li.append(di)
    

# for i in range(1,3):
#     di={}
#     name=tree.xpath('/html/body/div/div[7]/div/div/ul[4]/li[{}]//text()'.format(i))[0]
#     url1=tree.xpath('/html/body/div/div[7]/div/div/ul[4]/li[{}]//@href'.format(i))[0]
#     url1="https://www.bch.com.cn"+url1
#     if name!="临床流行病学与循证医学中心":
#         di["科室"]=name
#         di["URL"]=url1
#         li.append(di)   
    
information=[]    
for l in li:
    url2=l["URL"]
    response1=requests.get(url=url2,headers=headers)
    time.sleep(float(format(random.uniform(0,2), '.2f')))
    response1.encoding = 'utf-8' 
    page_text1=response1.text
    tree1=etree.HTML(page_text1)
    
    new_url1="https://www.bch.com.cn"+tree1.xpath('/html/body/div/div[6]/div[1]/div[2]/div[3]/h2/a/@href')[0]
    print(new_url1)
    
    response2=requests.get(url=new_url1,headers=headers)
    time.sleep(float(format(random.uniform(0,2), '.2f')))
    response2.encoding = 'utf-8' 
    page_text2=response2.text
    tree2=etree.HTML(page_text2)
    li_list=tree2.xpath('/html/body/div/div[6]/div[2]/div/ul/li')
    for list in li_list:
        infor={}
        pict_url="https://www.bch.com.cn"+list.xpath('./a/img/@src')[0]
        doctor_url="https://www.bch.com.cn"+list.xpath('./a/@href')[0]
        doctor_name=list.xpath('./div/a/text()')[0]
        infor["科室"]=l["科室"]
        infor["名字"]=doctor_name
        infor["医生链接"]=doctor_url
        infor["医生图片链接"]=pict_url
        
        information.append(infor)
   
def get_picture(dic):        
    url=dic["医生图片链接"]
    pic=requests.get(url=url,headers=headers).content
    #创建一个文件夹
    if not os.path.exists('./pictures'):
        os.mkdir('./pictures')
    img_path = 'pictures/'+dic['名字']+'.png'
    with open(img_path,'wb') as fp:
        fp.write(pic)
        print('下载成功!')
        
pool=Pool(4)
pool.map(get_picture,information)    
# with codecs.open("医技科室和平台中心.json", 'a', 'utf-8') as fp:
#     json.dump(information, fp, ensure_ascii=False,indent=4,separators=[",",":"])        
    
    
    
    
   
   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聆听我的召唤,菜鸟进化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值