Python技术

Python技术 's Blog


  • 首页

  • 标签

  • 归档

  • 关于

Python 小技之繁花盛开

发表于 2020-03-24 | 分类于 python

今天请各位读者朋友欣赏用 Python 实现的鲜花盛宴,你准备好了吗? 90 行代码即可实现一棵美丽的鲜花盛开树。 小编也是鲜花爱护协会者之一,但是想要看到美丽的花朵,得历经很多;对于知识的运用也是如此,需要不断吸收新知识,学习新技能,才能盛开出美丽的花朵。 接下来就看看一棵迷人的花树是怎么实现的吧!

阅读全文 »

Python 招聘岗位数据可视化

发表于 2020-03-23 | 分类于 Python 招聘岗位数据可视化

Python 招聘岗位数据可视化

项目背景

最近朋友圈又有小伙伴被降薪、被裁员了。往年金三银四是找工作的好时机,但在今年疫情之下互联网似乎更冷了。为了更好的找到好工作,就要了解企业需要什么样的人才,地区之间人才需求数量,薪资、学历与经验之间的关系等等。本文以拉勾网 Python 岗位数据作为分析。

阅读全文 »

用 Python 生成 & 识别二维码

发表于 2020-03-22 | 分类于 python

说到二维码大家一定不陌生,可以说现在二维码几乎渗透到了我们生活的各个角落,举例来说吧,我们到超市商场购物时扫描二维码付款,我们出行时乘坐公交地铁扫描二维码进站,我们到菜鸟驿站取件时扫描二维码取件,如果哪天我们碰到一个有趣的人,可能还会微信扫描二维码加个好友,如果你阅读我们的文章感觉对自己有一点帮助,还可以扫描文末二维码关注一下我们的公众号。

阅读全文 »

用 Python 来了解一下《安家》

发表于 2020-03-21 | 分类于 python

如果要选一部近期最火的电视剧,一定非《安家》莫属,你可能没有具体看过,但如果你看微博的话一定听过这个名字,这部电视剧多次登上微博热搜榜,好像还有几次冲上了热搜榜首,该剧主要讲述的是关于房产中介卖房的故事,电视剧原名也是叫卖房子的人。

阅读全文 »

用 Python 抓取公号文章保存成 HTML

发表于 2020-03-20 | 分类于 python

上次为大家介绍了如果用 Python 抓取公号文章并保存成 PDF 文件存储到本地。但用这种方式下载的 PDF 只有文字没有图片,所以只适用于没有图片或图片不重要的公众号,那如果我想要图片和文字下载下来怎么办?今天就给大家介绍另一种方案——HTML。

阅读全文 »

Python 图表利器 pyecharts

发表于 2020-03-20 | 分类于 python

随着互联网的高速发展,数据量也在疯狂增长,近几年数据分析,数据挖掘的岗位越来越吃香。说到数据分析,就离不开数据的可视化,毕竟图表比冷冰冰的数字直观,一眼就可以看出趋势和结论,毕竟一图胜千言。

而 Python 作为数据分析的主力语言,自然也有不少可视化的类库,比如 matplotlib,常用的柱状图、散点图、折线图都可以生成。但如果想在网页端展示的话就显得有些捉襟见肘了。

阅读全文 »

定投指数到底能不能赚钱?Python 来告诉你答案

发表于 2020-03-20 | 分类于 python

受疫情严重影响,全球股市都在不断下跌,就连一贯成熟、增长稳定的美股也在接二连三的不断向下熔断,仅这个月已经熔断五次了,要知道美股历史上的第一次熔断发生在 1997 年。很多人都被跌的一夜回到解放前了。

相比股市的大幅下跌,跟踪大盘指数的基金要相对平缓很多,虽然也在跌,但没有股市那么大幅度。就连巴菲特也曾经劝导我们,对于个人投资者而言,最好的投资方式就是定投指数基金。

所谓定投指数基金,就是在固定日期买入固定金额的基金。与买卖股票相比,定投指数基金省时省力,不用时刻盯盘,只需每周或者每月买入一次即可,年轻人应该多花些时间在自己的工作上,不断的提升自己的能力才是最好的投资。

那么,今天我们就用数据来验证下,定投指数基金到底能不能赚钱,又能赚多少钱呢。

阅读全文 »

用 Python 画哆啦 A 梦

发表于 2020-03-20 | 分类于 python

相信大家童年都看过哆啦 A 梦,他的口袋简直是无所不能,里面装满了各种神奇的道具。曾经的我也幻想如果自己也有一个这样的口袋多好。今天我们就用 Python 来画一个哆啦A梦,怀念下我们的童年。

阅读全文 »

Word 神器 python-docx

发表于 2020-03-19 | 分类于 python

前两天有个朋友向我求助,她在写毕业论文时,不小心将论文里的中文双引号替换为英文的了,各种原因导致无法回退,8万多字的论文,眼看就要交了,该怎么办?

阅读全文 »

求职需要的 Python 技能

发表于 2020-03-19 | 分类于 求职需要的 Python 技能

求职需要的 Python 技能

每年的 3、4 月份都是金三银四跳槽季,企业一般也会选择在这个时期调整职工的薪资,小伙伴在这个时候也会心里痒痒,在招聘网站上看看是否有合适的机会,需要的 Python 技能是否符合年限等等情况。这里以招聘网站为例抓取魔都近一个月的招聘数据,生成柱状图与词云。

抓取招聘网站数据

首先将魔都 近 1 个月的招聘职位都抓取出来,使用 requests 模块和 BeautifulSoup 模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import time
import random

urlFileName = 'urls.txt' # 存放招聘信息详情的URL文本
contentFileName = 'context.txt' # 存放抓取的内容
def getUrls2Txt(page_num):
    p = page_num+1
    for i in range(1, p):
        urls = []
        # 抓取魔都的
        url = 'https://search.51job.com/list/020000,000000,0000,00,2,99,Python,2,'+str(i)+'.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare='

        html = requests.get(url)
        soup = BeautifulSoup(html.content, "html.parser")
        ps = soup.find_all('p', class_='t1')
        for p in ps:
            a = p.find('a')
            urls.append(str(a['href']))
        with open(urlFileName, 'a', encoding='utf-8') as f:
            for url in urls:
                f.write(url+'\n')
        s = random.randint(5, 30)
        print(str(i)+'page done,'+str(s)+'s later')
        time.sleep(s)

def getContent(url, headers):
    record = ''
    try:
        html = requests.get(url, headers=headers)
        soup = BeautifulSoup(html.content, "html.parser")
        positionTitle = str(soup.find('h1')['title']) # 标题
        salary = soup.find_all('strong')[1].get_text() # 薪资
        companyName = soup.find('p', class_='cname').get_text().strip().replace('\n','').replace('查看所有职位','') # 公司名
        positionInfo = soup.find(
            'div', class_='bmsg job_msg inbox').get_text().strip().replace('\n', '').replace('分享', '').replace('举报', '').replace(' ', '').replace('\r', '') # 岗位职责
        record = positionTitle + '&&&' + salary + '&&&' + companyName + '&&&' + '&&&' + positionInfo
    except Exception as e:
        print('错误了')
    return record


def main():
        page_num = 93
        getUrls2Txt(page_num)
        user_Agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
        headers = {'User-Agent': user_Agent}
        with open(urlFileName, 'r', encoding='utf-8') as f:
            urls = f.readlines()
        i = 0
        for url in urls:
            url = url.strip()
            if url != '':
                record = getContent(url, headers)
                with open(contentFileName, 'a', encoding='utf-8') as f:
                        f.write(record + '\n')
                i += 1
                print(str(i)+'详情抓取完成')
                time.sleep(1)

        print('完成了')


if __name__ == '__main__':
    main()

抓取网站内容结果图

分词

在这一步需要对招聘信息中的职位信息进行人工的初步删选,过滤掉常用字存入 filterWords 变量中,然后利用结巴分词(https://github.com/fxsjy/jieba)基于TF-IDF算法将职位信息进行分词,并统计技术词语出现的次数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from jieba import analyse

fenCi = {}

def main():

    # 负责过滤的词语,这里只列出了几个
    filterWords = ['熟悉', '熟练', '经验', '优先', '应用开发', '相关', '工作', '开发', '能力', '负责', '技术', '具备', '精通', '数据', 'ETC']

    # 结巴分词基于 TF-IDF 算法的关键词
    tfidf = analyse.extract_tags
    
    for zpInfo in open('context.txt', 'r', encoding='utf-8'):

        if zpInfo.strip() == '':
            continue
        # 详情数据是用&&&分割的
        infos = zpInfo.split("&&&")
        words = tfidf(infos[-1])

        words = [x.upper() for x in words if x.upper() not in filterWords]

        for word in words:
            num = fenCi.get(word, 0) + 1
            fenCi[word] = num

    print(sorted(fenCi.items(), key=lambda kv: (kv[1], kv[0]), reverse=True))
    print('分出了' + str(len(fenCi)) + '了词语')


if __name__ == '__main__':
    main()

最终分词的结果图

技能图表

在分词中,分出了 12663 个词这些词大多都是常用字,需要进一次筛选出多个高频的 Python 技能利用 matplotlib 模块画出柱状图。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
params = {
    'axes.labelsize': '14',
    'xtick.labelsize': '14',
    'ytick.labelsize': '13',
    'lines.linewidth': '2',
    'legend.fontsize': '20',
    'figure.figsize': '26, 24'
}
plt.style.use("ggplot")
plt.rcParams.update(params)

# 筛选分词中高频的
barDir = {
    'PYTHON': 2283,
    'LINUX': 981,
    '算法': 658,
    '运维': 530,
    '数据库(MySql,Sql,Redis等)': 1021,
    'SHELL': 996,
    '数据分析/挖掘': 695,
    'WEB': 454,
    '测试用例': 515,
    'MATLAB': 221,
    'PERL': 209,
    'HIVE': 122,
    'HADOOP': 176,
    'SPARK': 146,
    'TENSORFLOW': 136,
    '多线程': 127,
    'AI': 106,
    'SAS': 104,
    '视觉/图像处理': 180,
    '人工智能': 170,
    'HTTP': 90,
    'DOCKER': 82,
    'DJANGO': 82,
}

fig, ax = plt.subplots(figsize=(20, 10), dpi=100)

# 添加刻度标签
labels = np.array(list(barDir.keys()))
ax.barh(range(len(barDir.values())), barDir.values(), tick_label=labels, alpha=1)

ax.set_xlabel('Python技术词的次数', color='k')
ax.set_title('Python工作高频技术词')


# 为每个条形图添加数值标签
for x, y in enumerate(barDir.values()):
    ax.text(y + 0.5, x, y, va='center', fontsize=14)

# 显示图形
plt.show()

生成的柱状图

词云

最后将分词数据生成一个词云,将 Python 图标作为底图使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def getWorldCloud():
   # 底层图片路径
   path_img = "python.jpg"
   background_image = np.array(Image.open(path_img))

   wordcloud = WordCloud(
       # 字体路径
       font_path="/System/Library/Fonts/STHeiti Light.ttc",
       background_color="white",
       mask=background_image).generate(" ".join(list(fenCi.keys())))
   image_colors = ImageColorGenerator(background_image)
   plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation="bilinear")
   plt.axis("off")
   plt.show()

生成的词云图

总结

本文主要是从招聘网站抓取 Python 工作职责并生成柱状图和词云,展示企业需要哪些 Python 技能,从而在面试前学会并运用这些技能。在生成最后结果的过程中存在 2 点不完美的情况,一点是存在人工筛选另一个是在分词中没有完全过滤掉通用字。随着小编的 Python 技能树的增长,有理由相信在不久这 2 中情况将完全避免。

示例代码:求职需要的 Python 技能

阅读全文 »

做时间的朋友 —— 用印象笔记打造时间记录工具

发表于 2020-03-17 | 分类于 python

相信很多朋友听说或读过李笑来写的《把时间当作朋友》,其中介绍了一个记录时间日志的方法,用来帮助我们了解自己的状态,培养对时间的感知。但是实践起来并不容易,特别是没有好的记录工具,今天介绍下我是如何利用 Python 来分析时间日志的

阅读全文 »

用 Python 抓取公号文章保存成 PDF

发表于 2020-03-15 | 分类于 python

今天为大家介绍如何将自己喜欢的公众号的历史文章转成 PDF 保存到本地。前几天还有朋友再问,能不能帮把某某公众号的文章下载下来,因为他很喜欢这个号的文章,但由于微信上查看历史文章不能排序,一些较早期的文章翻很长时间才能找到,而且往往没有一次看不了几篇,下次还得再重头翻,想想就很痛苦。

阅读全文 »

你真的了解微信好友吗

发表于 2020-03-11 | 分类于 python

今天发现了一个好玩的 python 第三方库 itchat,它的功能很强大:只要你扫一下它所生成的二维码即可模拟登陆你的微信号,然后可以实现自动回复,爬取微信列表好友信息等功能。这么强大的功能简直是相见恨晚,我忍不住激动地心情用它练了一把手。

阅读全文 »

Flask 数据可视化

发表于 2020-03-11 | 分类于 python

数据可视化是数据处理中的重要部分,前面我们了解了 Flask 的开发和部署,如何用 Flask 做数据可视化呢?今天我们来了解一下。

阅读全文 »

关于中国人口,你需要关心的问题

发表于 2020-03-10 | 分类于 python

中国的人口总数已经突破14亿了,你知道吗?中国人口的出生率、死亡率和自然增长率你了解吗?中国人口的男女比例你清楚吗?不要着急,跟随着我来一起了解。

阅读全文 »

教你用 Python 下载手机小视频

发表于 2020-03-07 | 分类于 python

上次给大家介绍了 mitmproxy 这个抓包工具,并且演示了如何用这个工具改变你电脑上网的请求以及请求返回信息,是不是觉得还有点意思。今天再为大家介绍下使用这个工具如何监控手机上网,并且通过抓包,把我们想要的数据下载下来。

阅读全文 »

Python 小技之繁花曲线

发表于 2020-02-29 | 分类于 python

Python 小技之繁花曲线

前几天逛朋友圈的时候,无意间刷到同学这样一条内容:

朋友圈截图

不知道大家有没有眼熟的感觉,反正是勾起了我不少回忆。

这种叫做“万花尺”的小玩意儿小时候应该不少人都玩过。一个大圆套一个小圆,圆与圆之间通过齿轮啮合在一起。

阅读全文 »

教你用 Python 操控你的上网请求

发表于 2020-02-29 | 分类于 python

今天给大家介绍个有意思的工具,不知道你有没有听说过中间人攻击(Man-in-the-middle attack)简称 MITM,是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”,看下这张图可能更容易理解。

阅读全文 »

对豆瓣电影 TOP250 进行数据分析之后,我得到了这些结论

发表于 2020-02-29 | 分类于 python

上次我们对豆瓣 TOP250 电影进行了抓取,今天我们就对这批数据分析一波,看看可以找到什么结论。

今天主要分析以下几个点。

什么类型的电影上榜数量最多。

上榜数量最多的国家和地区是哪里。

上榜次数最多的导演和演员都有谁。

电影的排名和评论人数以及评分人数有没有关系。

上榜电影中人们更喜欢用哪些标签给电影做标注。

阅读全文 »

利用搜索指数窥探舆情

发表于 2020-02-29 | 分类于 python

新冠病毒全球蔓延,你知道人民最关注的是什么吗?最近股市大爆,你知道人们相关搜索最多的内容是什么吗?特不靠谱天天嘴炮,你知道他最引人注目的特征是什么吗?如果你对这些感兴趣,那么请跟随我的脚步去看看吧!

阅读全文 »
1 … 19 20 21 … 28
Python Geek Tech

Python Geek Tech

一群热爱 Python 的技术人

554 日志
56 分类
159 标签
RSS
GitHub 知乎
Links
  • 纯洁的微笑
© 2019 - 2023 Python Geek Tech
由 Jekyll 强力驱动
主题 - NexT.Mist