利用zip()函数把四个列表一对一的组合成一个元组。
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
利用map()函数对每一个元素进行函数操作,用匿名函数提取text和去掉\n
map()是 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
#python2 和python3 有差别,python3里面,map(),zip()的返回值已经不再是list,而是iterators, 所以想要使用,只用将iterator 转换成list 即可, 比如 list(map())
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表 也可以zip(a,b,c)
[(1, 4), (2, 5), (3, 6)]
zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
OMIM robots.txt 设置了爬虫策略,只允许 微软必应 bingbot 和谷歌 googlebot 爬虫获取指定路径内容。所以要进行爬取,需要进行设置,此处不讲,我们只对获得的网页解析
#!/usr/bin/env python
#-*- encoding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding('utf8') from bs4 import BeautifulSoupoutput = open('./code/omim.txt','a')
html = open('C:/Users/xxxx/Desktop/code/omim.txt','r')
soup = BeautifulSoup(html,'lxml')
all = soup.select('.mim-text-font')
id = soup.select('#allelicVariantsFold')for i in id :number = i.select('.mim-font')ty = i.select('.lookup')rs = i.select('.btn-group')dec = i.select('p')print len(dec)zz= zip (number,ty,rs,dec)for z in zz:out= map(lambda x: x.text.strip('\n'),z)result = '\t'.join(out[i] for i in range(len(out)))output.write(result+'\n')output.flush()
output.close()