python抓取TIOBE指数前20名排行开发语言--lxml

目标网址:https://www.tiobe.com/tiobe-index/
TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据,只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

该指数可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的。观察认为,该指数反应的虽并非当前最流行或应用最广的语言,但对世界范围内开发语言的走势仍具有重要参考意义。

目标数据python抓取TIOBE指数前20名排行开发语言--lxml_第1张图片

如上图所示:

(1)2020年3月的排名(2)2019年3月排名(3)编程语言(4)评分(5)变化率


import requests
from requests.exceptions import RequestException
from lxml import etree

def getHTMLText(url):
    headers = {

        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'

    }
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except RequestException as e:
        print('error', e)


def fillUnivList(ulist, html):
    html = etree.HTML(html, etree.HTMLParser())
    ulist = html.xpath('//table[contains(@class,"table-top20")]/tbody/tr//text()')
    #print(ulist)
    tplt = "{0:^10}\t{1:^10}\t{2:^25}\t{3:^10}\t{4:^10}"
    print(tplt.format("2020.03", "2019.03", "编程语言", "评分", "变化率", chr(12288)))
    j = 0
    for i in range(20):
        if i == 0:
            print(tplt.format(ulist[0], ulist[1], ulist[2], ulist[3], ulist[4], chr(12288)))
        else:
            print(tplt.format(ulist[j], ulist[j+1], ulist[j+2], ulist[j+3], ulist[j+4], chr(12288)))
        j += 5 


def main():
    uinfo = []
    url = 'https://www.tiobe.com/tiobe-index/'
    html = getHTMLText(url)
    fillUnivList(uinfo, html)

main()

运行结果python抓取TIOBE指数前20名排行开发语言--lxml_第2张图片

你可能感兴趣的:(python爬虫)