• 爬取编程常用词汇,保存为Excel


    编程常用词汇

    import requests
    import openpyxl
    from lxml import etree
    import re
    
    url = 'https://www.runoob.com/w3cnote/common-english-terminology-in-programming.html'
    
    #   得到响应结果
    res = requests.get(url)
    #   xpath取值
    selector = etree.HTML(res.text)
    #   字母的索引
    word_letter = selector.xpath('//h2/text()')
    #   删除列表里前两个多余的值
    del word_letter[0:2]
    # print(word_letter)
    #   word_letter 最后的值为
    #   ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '专业名词']
    
    #   得到每个索引的table,每个table里包含各索引的所有单词
    result = selector.xpath('//table')
    #   删除多余的数据
    result.pop(0)
    
    #   创建workbook
    wb = openpyxl.Workbook()
    #   创建worksheet
    ws = wb.active
    
    #   利用下标取出词汇的索引
    index = -1
    for table in result:
        #   一开始就进行计数,即从0开始
        index += 1
        #   先添加索引,再取出每个table里的所有单词
        ws.append([word_letter[index]])
        #   打印索引
        print(word_letter[index])
    
        #   X索引里没有单词
        if word_letter[index] == 'X':
            #   每个字母索引之间空一行
            ws.append([])
            #   继续循环对后面table里的单词进行添加
            continue
    
        #   添加一行Excel数据
        ws.append(['英文', '译法 1', '译法 2', '译法 3'])
        #   将Element类型显示为字符,为byte类型,需要decode
        #   中文不显示,需要设置 encoding='utf-8'
        words_html = etree.tostring(table, encoding='utf-8').decode()
    
        #   一个tr:单词和译法
        #   利用正则得到一个table里所有tr的内容
        word_html = re.findall('<tr>.*?</tr>', words_html, re.S)
        #   删除带<strong>标签的'英文 译法1 译法2 译法3'这条数据
        #   前面已经手动添加,后面不需要每条都去判断去除<strong>标签
        word_html.pop(0)
        for tr in word_html:
            #   一个td:一个单词或一个译法
            #   利用正则得到一个tr里所有td的内容
            #   得到的为list,一个td_list里面包含一个单词和对应的译文(含空格)
            td_list = re.findall('<td>(.*?)</td>', tr, re.S)
            #   用新的列表接收去除空格后的单词和译文
            word = []
            for i in td_list:
                #   去除每个td里包含的空格,添加为一个列表
                word.append(i.strip())
            #   打印单词
            print(word)
            #   一个word包含一个单词和对应的译文(不含空格)
            #   将这个单词添加进Excel
            ws.append(word)
        #   每个字母索引之间空一行
        ws.append([])
    
    #   保存Excel
    path = r'C:UsersHlzyDesktop编程常用词汇.xlsx'
    wb.save(path)
    
    #   没有设置单元格样式,可以直接打开Excel,设置边宽,全选居中
    
    

    控制台打印



    Excel内容



    提取链接:https://pan.baidu.com/s/11kQnMQU_ilOtgf4Mom0nhw




  • 相关阅读:
    CSS 3列等高
    CSS分列等高
    jQuery函数
    JQuery解析JSON数据
    2020-09-25:rust中Point是结构体类型,【let p1=Point{x:25,y:25};let p2=p1;】请问p1和p2是同一个对象吗?
    2020-09-24:jvm监控系统是通过jmx做的么?
    2020-09-23:TCP头部信息有哪些?
    2020-09-22:已知两个数的最大公约数和最小公倍数,并且这两个数不能是最大公约数和最小公倍数本身。如何判断这两个数是否存在?
    2020-09-21:已知最大公约数和最小公倍数,如何判断这两个数是否存在?
    2020-09-20:如何判断一个数是质数?
  • 原文地址:https://www.cnblogs.com/jiyu-hlzy/p/11987836.html
Copyright © 2020-2023  润新知