Python-从百度百科上查找对应人名信息并整合下载到本地

最近因为需要整理学者信息,所以编写了个爬虫程序:

大致思路是这样啦,代码还没优化,先放着吧
#!/usr/bin/python
#@Author: zhongshsh

# 不能爬取表格
# 如果报错list超出范围,可能是网页无目录

import requests
import re
from bs4 import BeautifulSoup, NavigableString
import urllib

def get_html(url):
        headers = {
        'User-Agent': 'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\
        AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'
        }
        response = requests.get(url, headers=headers)
        return response.text

# 删除超链接,保留标签内的内容
def strip_tags(html, invalid_tags):
    soup = BeautifulSoup(html, 'lxml')
    for tag in soup.findAll(True):
        if tag.name in invalid_tags:
            s = ""
            for c in tag.contents:
                if not isinstance(c, NavigableString):
                    c = strip_tags(str(c), invalid_tags)
                s += str(c)
            tag.replaceWith(s)
    return soup

# 删除标引
def strip_by(soup):
    [s.extract() for s in soup('sup')]
    [s.extract() for s in soup('sub')]
    return soup

# 获取列表信息
def get_ls(html):
    pattern = re.compile('class=\"basicInfo-block basicInfo-left\">(.*?).*?'
                         'class=\"basicInfo-block basicInfo-right\">(.*?)', re.S)
    pa = re.findall(pattern, html)
    soup = BeautifulSoup(str(strip_tags(str(pa[0]), ['a','br'])).replace('\\n',''),'lxml')
    dt_list=[]
    dd_list=[]
    for i in soup.find_all('dt'):
        dt_list.append(i.string)
    for i in soup.find_all('dd'):
        dd_list.append(i.string)
    return dt_list,dd_list

# 爬取目录
def ml(html):
    pattern = re.compile('class=\"catalog-list.*?>(.*?)
', re.S) pa = re.findall(pattern, html) soup = BeautifulSoup(str(pa[0]), 'lxml') ml_list=[] for i in soup.find_all('a'): ml_list.append(i.string) return ml_list # 爬取内容 def cont(html): cont_list = html.split('title-text') ct = [] for i in range(len(cont_list)): if i == 0: continue else: soup = strip_by(strip_tags(cont_list[i], ['a','i','b'])) soup = BeautifulSoup(str(soup).replace('\n',''),'lxml') string='' for i in soup.find_all(attrs={'label-module':"para"}): if i.string != None and i.string.find('img') == -1: string=string+i.string.replace('','').replace('','')+'\n' # 需要改进一下去除标签部分 ct.append(string) return ct if __name__ == '__main__': with open('data.txt','w') as f: f.write('') f=open('data.txt','a',encoding='utf-8') # name=['包伟民','杜桂萍','尚永亮','左东岭','程章灿'] name = ['二极管'] for k in name: f.write('<***********************'+k+'**********************>\n') url = 'https://baike.baidu.com/item/'+urllib.parse.quote(k) print(k,'--->',url) html = get_html(url) pattern = re.compile('promotion-declaration.*?
(.*?)' '
, re.S) pa = re.findall(pattern, html) html_pa = '' for i in pa: html_pa = i f.write(strip_by(strip_tags(html_pa.replace('\n',''),['a'])).text) # 获取简介 f.write('\n\n') dt_list,dd_list = get_ls(html) [f.write(i+':'+j+'\n') for (i,j) in zip(dt_list, dd_list)] # 获取列表 f.write('\n') [f.write(i + ':\n' + j + '\n') for (i, j) in zip(ml(html), cont(html))] # 获取主要内容 f.close()
结果
<***********************二极管**********************>
二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件 。它具有单向导电性能, 即给二极管阳极和阴极加上正向电压时,二极管导通。 当给阳极和阴极加上反向电压时,二极管截止。 因此,二极管的导通和截止,则相当于开关的接通与断开 。二极管是最早诞生的半导体器件之一,其应用非常广泛。特别是在各种电子电路中,利用二极管和电阻、电容、电感等元器件进行合理的连接,构成不同功能的电路,可以实现对交流电整流、对调制信号检波、限幅和钳位以及对电源电压的稳压等多种功能 。无论是在常见的收音机电路还是在其他的家用电器产品或工业控制电路中,都可以找到二极管的踪迹 。

中文名:二极管
外文名:Diode
特    性:单向导电性
应    用:家用电器、工业控制电路等
类    别:半导体器件
组成材料:硅、硒、锗等

结构组成:
二极管就是由一个PN结加上相应的电极引线及管壳封装而成的。 
采用不同的掺杂工艺,通过扩散作用,将P型半导体与N型半导体制作在同一块半导体(通常是硅或锗)基片上,在它们的交界面就形成空间电荷区称为PN结。 
二极管的电路符号如图所示。二极管有两个电极,由P区引出的电极是正极,又叫阳极;由N区引出的电极是负极,又叫阴极。三角箭头方向表示正向电流的方向,二极管的文字符号用VD表示。 

工作原理:
二极管的主要原理就是利用PN结的单向导电性,在PN结上加上引线和封装就成了一个二极管。
晶体二极管为一个由P型半导体和N型半导体形成的PN结,在其界面处两侧形成空间电荷层,并建有自建电场。当不存在外加电压时,由于PN结两边载流子浓度差引起的扩散电流和自建电场引起的漂移电流相等而处于电平衡状态。 
当外界有正向电压偏置时,外界电场和自建电场的互相抑消作用使载流子的扩散电流增加引起了正向电流。当外界有反向电压偏置时,外界电场和自建电场进一步加强,形成在一定反向电压范围内与反向偏置电压值无关的反向饱和电流。 
当外加的反向电压高到一定程度时,PN结空间电荷层中的电场强度达到临界值产生载流子的倍增过程,产生大量电子空穴对,产生了数值很大的反向击穿电流,称为二极管的击穿现象。PN结的反向击穿有齐纳击穿和雪崩击穿之分。 

PN结形成原理:
因硼原子只有三个价电子,它与周围的硅原子形成共价键,因缺少一个电子,在晶体中便产生一个空位,当相邻共价键上的电子获得能量时就有可能填补这个空位,使硼原子成了不能移动的负离子,而原来的硅原子的共价键则因缺少一个电子,形成了空穴,但整个半导体仍呈中性。这种P型半导体中以空穴导电为主,空穴为多数载流子,自由电子为少数载流子。 
N型半导体形成的原理和P型原理相似。在本征半导体中掺入五价原子,如磷等。掺入后,它与硅原子形成共价键,产生了自由电子。在N型半导体中,电子为多数载流子,空穴为少数载流子。 

PN结单向导电性:PN结外加正向电压V,在这个外加电场的作用下,PN结的平衡状态被打破,P区中的空穴和N区的电子都要PN结移动,空穴和PNP区的负离子中和,电子和PNN区的正离子中和,这样就使PN结变窄。随着外加电场的增加,扩散运动进一步增强,漂移运动减弱。当外加电压超过门槛电压,PN结相当于一个阻值很小的电阻,也就是PN结导通。 

主要分类:

点接触型二极管:
点接触型二极管的PN结接触面积小,不能通过较大的正向电流和承受较高的反向电压,但它的高频性能好,适宜在高频检波电路和开关电路中使用 。

面接触型二极管:
面接触型二极管的PN结接触面积大,可以通过较大的电流,也能承受较高的反向电压,适宜在整流电路中使用 。

平面型二极管:
平面型二极管在脉冲数字电路中作开关管使用时PN结面积小,用于大功率整流时PN结面积较大 。

稳压管:
稳压管与一般二极管不一样,它的反向击穿是可逆的,只要不超过稳压管电流的允许值,PN结就不会过热损坏,当外加反向电压去除后,稳压管恢复原性能,所以稳压管具有良好的重复击穿特性。 

光电二极管:
当无光照时,光电二极管的伏安特性与普通二极管一样。光电二极管作为光控元件可用于各种物体检测、光电控制、自动报警等方面。当制成大面积的光电二极管时,可当作一种能源而称为光电池。此时它不需要外加电源,能够直接把光能变成电能。 

发光二极管:
在电子技术中常用的数码管,发光二极管的原理与光电二极管相反。当发光二极管正向偏置通过电流时会发出光来,这是由于电子与空穴直接复合时放出能量的结果。它的光谱范围比较窄,其波长由所使用的基本材料而定。 

特性参数:
用来表示二极管的性能好坏和适用范围的技术指标,称为二极管的参数。不同类型的二极管有不同的特性参数。 

伏安特性:
二极管具有单向导电性,二极管的伏安特性曲线如图所示 。
对于锗二极管,开启电压为0.2V,导通电压UD约为0.3V。在二极管加有反向电压,当电压值较小时,电流极小,其电流值为反向饱和电流IS。当反向电压超过某个值时,电流开始急剧增大,称之为反向击穿,称此电压为二极管的反向击穿电压,用符号UBR表示。不同型号的二极管的击穿电压UBR值差别很大,从几十伏到几千伏 。

正向特性:
外加正向电压时,在正向特性的起始部分,正向电压很小,不足以克服PN结内电场的阻挡作用,正向电流几乎为零,这一段称为死区。这个不能使二极管导通的正向电压称为死区电压。 
当正向电压大于死区电压以后,PN结内电场被克服,二极管正向导通,电流随电压增大而迅速上升。在正常使用的电流范围内,导通时二极管的端电压几乎维持不变,这个电压称为二极管的正向电压。 

反向特性:
外加反向电压不超过一定范围时,通过二极管的电流是少数载流子漂移运动所形成反向电流。由于反向电流很小,二极管处于截止状态。这个反向电流又称为反向饱和电流或漏电流,二极管的反向饱和电流受温度影响很大。 
一般硅管的反向电流比锗管小得多,小功率硅管的反向饱和电流在nA数量级,小功率锗管在μA数量级。温度升高时,半导体受热激发,少数载流子数目增加,反向饱和电流也随之增加。 

击穿特性:
外加反向电压超过某一数值时,反向电流会突然增大,这种现象称为电击穿。引起电击穿的临界电压称为二极管反向击穿电压。电击穿时二极管失去单向导电性。如果二极管没有因电击穿而引起过热,则单向导电性不一定会被永久破坏,在撤除外加电压后,其性能仍可恢复,否则二极管就损坏了。因而使用时应避免二极管外加的反向电压过高。 
反向击穿按机理分为齐纳击穿和雪崩击穿两种情况。在高掺杂浓度的情况下,因势垒区宽度很小,反向电压较大时,破坏了势垒区内共价键结构,使价电子脱离共价键束缚,产生电子-空穴对,致使电流急剧增大,这种击穿称为齐纳击穿。如果掺杂浓度较低,势垒区宽度较宽,不容易产生齐纳击穿。 
另一种击穿为雪崩击穿。当反向电压增加到较大数值时,外加电场使电子漂移速度加快,从而与共价键中的价电子相碰撞,把价电子撞出共价键,产生新的电子-空穴对。新产生的电子-空穴被电场加速后又撞出其它价电子,载流子雪崩式地增加,致使电流急剧增加,这种击穿称为雪崩击穿。无论哪种击穿,若对其电流不加限制,都可能造成PN结永久性损坏。 

反向电流:
反向电流是指二极管在常温(25℃)和最高反向电压作用下,流过二极管的反向电流。反向电流越小,管子的单方向导电性能越好。值得注意的是反向电流与温度有着密切的关系,大约温度每升高10℃,反向电流增大一倍。例如2AP1型锗二极管,在25℃时反向电流若为250μA,温度升高到35℃,反向电流将上升到500μA,依此类推,在75℃时,它的反向电流已达8mA,不仅失去了单方向导电特性,还会使管子过热而损坏。又如,2CP10型硅二极管,25℃时反向电流仅为5μA,温度升高到75℃时,反向电流也不过160μA。故硅二极管比锗二极管在高温下具有较好的稳定性。 

动态电阻:
二极管特性曲线静态工作点附近电压的变化与相应电流的变化量之比。 

电压温度系数:
电压温度系数指温度每升高一摄氏度时的稳定电压的相对变化量。 

最高工作频率:
最高工作频率是二极管工作的上限频率。因二极管与PN结一样,其结电容由势垒电容组成。所以最高工作频率的值主要取决于PN结结电容的大小。若是超过此值。则单向导电性将受影响。 

最大整流电流:
最大整流电流是指二极管长期连续工作时,允许通过的最大正向平均电流值,其值与PN结面积及外部散热条件等有关。因为电流通过管子时会使管芯发热,温度上升,温度超过容许限度(硅管为141℃左右,锗管为90℃左右)时,就会使管芯过热而损坏。所以在规定散热条件下,二极管使用中不要超过二极管最大整流电流值。 

最高反向工作电压:
加在二极管两端的反向电压高到一定值时,会将管子击穿,失去单向导电能力。为了保证使用安全,规定了最高反向工作电压值。 

检测方法:

小功率晶体二极管:
1. 判别正、负电极
(1)观察外壳上的符号标记。通常在二极管的外壳上标有二极管的符号,带有三角形箭头的一端为正极,另一端是负极。 
(2)观察外壳上的色点。在点接触二极管的外壳上,通常标有极性色点(白色或红色)。一般标有色点的一端即为正极。还有的二极管上标有色环,带色环的一端则为负极。 
(3)以阻值较小的一次测量为准,黑表笔所接的一端为正极,红表笔所接的一端则为负极。(d)观察二极管外壳,带有银色带一端为负极。 
2. 检测最高反向击穿电压。对于交流电来说,因为不断变化,因此最高反向工作电压也就是二极管承受的交流峰值电压。 

双向触发二极管:
将万用表置于相应的直流电压挡,测试电压由兆欧表提供。 
测试时,摇动兆欧表,万同样的方法测出VBR值。最后将VBOVBR进行比较,两者的绝对值之差越小,说明被测双向触发二极管的对称性越好。 

瞬态电压抑制二极管:
用万用表测量管子的好坏对于单要极型的TVS,按照测量普通二极管的方法,可测出其正、反向电阻,一般正向电阻为4kΩ左右,反向电阻为无穷大。 
对于双向极型的瞬态电压抑制二极管,任意调换红、黑表笔测量其两引脚间的电阻值均应为无穷大,否则,说明管子性能不良或已经损坏。 

高频变阻二极管:
识别正、负极高频变阻二极管与普通二极管在外观上的区别是其色标颜色不同,普通二极管的色标颜色一般为黑色,而高频变阻二极管的色标颜色则为浅色。其极性规律与普通二极管相似,即带绿色环的一端为负极,不带绿色环一端为正极。 

变容二极管:
将万用表红、黑表笔怎样对调测量,变容二极管的两引脚间的电阻值均应为无穷大。如果在测量中,发现万用表指针向右有轻微摆动或阻值为零,说明被测变容二极管有漏电故障或已经击穿坏。 

单色发光二极管:
在万用表外部附接一节能1.5V干电池,将万用表置R×10R×100挡。这种接法就相当于给予万用表串接上了1.5V的电压,使检测电压增加至3V(发光二极管的开启电压为2V)。检测时,用万用表两表笔轮换接触发光二极管的两管脚。若管子性能良好,必定有一次能正常发光,此时,黑表笔所接的为正极红表笔所接的为负极。 

红外发光二极管:
1. 判别红外发光二极管的正、负电极。红外发光二极管有两个引脚,通常长引脚为正极,短引脚为负极。因红外发光二极管呈透明状,所以管壳内的电极清晰可见,内部电极较宽较大的一个为负极,而较窄且小的一个为正极。 
2. 先测量红个发光二极管的正、反向电阻,通常正向电阻应在30k左右,反向电阻要在500k以上,这样的管子才可正常使用。 

红外接收二极管:
1. 识别管脚极性
(1)从外观上识别。常见的红外接收二极管外观颜色呈黑色。识别引脚时,面对受光窗口,从左至右,分别为正极和负极。另外在红外接收二极管的管体顶端有一个小斜切平面,通常带有此斜切平面一端的引脚为负极,另一端为正极。 
(2)先用万用表判别普通二极管正、负电极的方法进行检查,即交换红、黑表笔两次测量管子两引脚间的电阻值,正常时,所得阻值应为一大一小。以阻值较小的一次为准,红表笔所接的管脚步为负极,黑表笔所接的管脚为正极。 
2. 检测性能好坏。用万用表电阻挡测量红外接收二极管正、反向电阻,根据正、反向电阻值的大小,即可初步判定红外接收二极管的好坏。 

激光二极管:
按照检测普通二极管正、反向电阻的方法,即可将激光二极管的管脚排列顺序确定。但检测时要注意,由于激光二极管的正向压降比普通二极管要大,所以检测正向电阻时,万用表指针公略微向右偏转而已。 

主要应用:

电子电路应用:1)开关电路
在数字、集成电路中利用二极管的单向导电性实现电路的导通或断开,这一技术已经得到广泛应用。开关二极管可以很好的保护的电路,防止电路因为短路等问题而被烧坏,也可实现传统开关的功能。开关二极管还有一个特性就是开关的速度很快。这是传统开关所无法比拟的。 
(2)限幅电路
在电子电路中,常用限幅电路对各种信号进行处理。它是用来让信号在预置的电平范围内,有选择地传输一部分信号。大多数二极管都可作为限幅使用,但有些时候需要用到专用限幅二极管,如保护仪表时。 
(3)稳压电路
在稳压电路中通常需要使用齐纳二极管,它是一种利用特殊工艺制造的面结型硅把半导体二极管,这种特殊二极管杂质浓度比较高,空间电荷区内的电荷密度大,容易形成强电场。当齐纳二极管两端反向电压加到某一值,反向电流急增,产生反向击穿。 
(4)变容电路
在变容电路中常用变容二极管来实现电路的自动频率控制、调谐、调频以及扫描振荡等。 

工业产品应用:
经过多年来科学家们不懈努力,半导体二极管发光的应用已逐步得到推广,发光二极管广泛应用于各种电子产品的指示灯、光纤通信用光源、各种仪表的指示器以及照明。发光二极管的很多特性是普通发光器件所无法比拟的,主要具有特点有:安全、高效率、环保、寿命长、响应快、体积小、结构牢固。因此,发光二极管是一种符合绿色照明要求的光源。 
发光二极管在很多领域得到普遍应用,下面介绍几点其主要应用:
(1)电子用品中的应用
发光二极管在电子用品中一般用作屏背光源或作显示、照明应用。从大型的液晶电视、电脑显示屏到媒体播放器MP3MP4以及手机等的显示屏都将发光二极管用作屏背光源。 
(2)汽车以及大型机械中的应用
发光二极管在汽车以及大型机械中得到广泛应用。汽车以及大型机械设备中的方向灯、车内照明、机械设备仪表照明、大前灯、转向灯、刹车灯、尾灯等都运用了发光二极管。主要是因为发光二极管的响应快、使用寿命长(一般发光二极管的寿命比汽车以及大型机械寿命长)。 
(3)煤矿中的应用
由于发光二极管较普通发光器件具有效率高、能耗小、寿命长、光度强等特点,因此矿工灯以及井下照明等设备使用了发光二极管。虽然还未完全普及,但在不久将得到普遍应用,发光二极管将在煤矿应用中取代普通发光器件。 
(4)城市的装饰灯
在当今繁华的商业时代,霓虹灯是城市繁华的重要标志,但霓虹灯存在很多缺点,比如寿命不够长等。因此,用发光二极管替代霓虹灯有着很多优势,因为发光二极管与霓虹灯相比除了寿命长,还有节能、驱动和控制简易、无需维护等特点。发光二极管替代霓虹灯将是照明设备发展的必然结果。 


你可能感兴趣的:(Python-从百度百科上查找对应人名信息并整合下载到本地)