python怎么做项目_听说你没有python项目可做,我教你个方法

原标题:听说你没有python项目可做,我教你个方法

学习了一段时间的Python,最近出现了“饥荒”,感觉需要多看些代码,多学习学习别人做些什么,但却不知道做点什么来进行练习。

说到看代码,我就想到了全球最大的同性交友网站GitHub。

在GitHub上面找项目还不能漫无目的的去找啊,毕竟这是一个大宝库,里面的内容非常丰富;

不仅仅是有Python,还有JS,JAVA等很多很多的语言,如果一直盲目的看下去,会浪费大量的时间。

所以我就打算写一个小爬虫,来爬取一下GitHub上面我想要的小项目。

b4d832f6d7b44a5e8341cea91871ba86.png

·首先既然是要练习python的项目,肯定语言是Python;

·其次,既然是小项目,那代码不会太长,我这里设置为150K-200K的文件大小,这样应该项目也会比较小;

·最后,我如果获取的是整个GitHub上面的这个大小的python项目,对我来说也是海量的,所以要限制数量,我这里限制为最近一个月发布的30个项目。

好了这就是我的需求了,一共三点,同样我们要去考虑一下,这三点的内容应该如何应对。

首先第一个就是怎么去找到所有的python项目呢?在这里我们使用了GitHub的API来获取项目,那首先来看一下API的形式。

https://api.github.com/search/code?q=language:想找的语言

这个输入了之后,就可以找到想找的语言的所有项目了。

但找到了并没有结束,还需要给爬下来,那这里面选择的是requests库,通过requests对网页进行访问,获取数据:

import requests

GetCodeApi = "https://api.github.com/search/code?q="

GetRepoApi ="https://api.github.com/search/repositories?q=language:python"

在整个API中,设置的条件还有三个还要提供文件大小以及目录:

https://api.github.com/search/code?q=language:语言+size:大小+repo:目录

这里大家可能比较好奇为什么我可以构建出来这样的一个API,实际上是通过GitHub的API接口网站来找的,这里有一个例子:

57680cd2ecd4413789c92c5fcc490bac.jpeg

我们可以看到里面有很多的字段,比如说我选中的这个字段,实际上就代表了这个文件的大小,那也是符合我们需要的字段,那就需要在这个API中体现出来。

repo这个参数在哪里呢?实际上这个参数在html_url中:

0ec6a9db209a49999348a335ed74e417.jpeg

当然啦,你要是认为哪个repo是和full_name一样的话,也是可以的,其实我最开始也是这么认为的。

不过后来我看到了下面这个东西,就认为上面的那个html_url这个更为靠谱些,就选择它了。

f791b62c88f84f63b3d4c8023edc15e1.jpeg

后面全部都是这个东西,那就是我们所需要的了。

下面我们就要建立一个函数,三个参数是需要我们自己输入的。

def get_code(language, size, repo):

这三个参数都是为了组成URL的,那这里面我们也要写上URL的内容:

url = GetCodeApi +"language:" + language + "+size:" + size +"+repo:" + repo

这样就可以访问GitHub的接口了,但是我们要用它,读取这个JSON内容:

info =requests.get(url).json()

外加一个循环来进行重复性的操作:

if 'items' in info:

for i ininfo['items']:

print(i['html_url'])

构建完了整个的函数。下面放上完整版:

def get_code(language, size, repo):

url = GetCodeApi +"language:" + language + "+size:" + size +"+repo:" + repo

# 访问GitHub接口

info =requests.get(url).json()

if 'items' in info:

for i ininfo['items']:

print(i['html_url'])

好,构建完了这个之后,我们就要进行下一步了,在上一步中我们实际上解决了两个问题;

一个是如何查找所有的python语言的项目,第二个是怎么限制文件的大小。

接下来需要解决的就是判断时间的问题,我们需要找到JSON里面写的这个:

d06d9157aef54b699b7417926b5d3e3b.jpeg

方框中这两个值比较重要,第一个带黄底的是建立时间,第二个是更新时间。

框选两个是方便我们进行筛选,如果想找建立时间的,就用created_at进行判断,如果想找更新时间的就用updated_at来判断。

def get_project(FindTime):

info = requests.get(GetRepoApi).json()

for I in info[‘items’]:

created_time = i[‘created_at’]

当然了,这里面我们找的是建立时间的,也可以找更新时间的(更新时间的感觉项目会更多一些),

如果要是更新时间的就将created_at改为updated_at就可以了。

if created_time > FindTime

如果建立时间大于查找时间的时候,就执行下面的内容(这里给内容直接写死了,大家可以开动一下脑筋改一下~改为自己输入哦~):

language ="python"

size = "<200"

现在看到其实语言和size写死了,但是这个repo真的不能写死啊,这时候上面的截图里面有些html_url的后面箭头指的是repo的,那我们需要提取出来:

repo =i['html_url'].replace("https://github.com/", "")

这次就要激活一下上面写的查找函数了:

get_code(language,size, repo)

执行这个函数就OK了,但是这里面有个问题,就是这个时间的问题。

时间推荐直接手动修改字符串,例如get_project(‘2019-02-12T00:00:00Z’)

好,那就给这部分的代码完整版放出来咯

def get_project(FindTime):

info = requests.get(GetRepoAPI).json()

for i in info['items']:

created_time =i['created_at']

if created_time >last_week:

language ="python"

size ="<200"

repo =i['html_url'].replace("https://github.com/", "")

get_code(language,size, repo)

这样我们就有取之不尽,用之不竭的小项目可以模仿,可以学习咯~

输出的结果是这样的:

439c60f3114040f5b840113e6aa0e57e.jpeg

最后,我将继续扮演一个小白,努力创造一个努力学习的小白形象,技术代码两开花,弘扬中华文化,希望大家多多支持啊~返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统CPU相关信息查询

Linux系统CPU相关信息查询 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 一.lscpu常用参数介绍 1>.查看帮助信息 [rootnode105 ~]# lscpu -h-a, –all: 包含上线和下线的cpu的数量&#xff0c;此选项只能与选…

excel下拉让函数参数部分不变

原理 使用相对引用就会变&#xff0c;bai使用绝对引用du就不变 A1是相对引用&#xff0c;上下拉公式的时候会zhi变成A2,A3…… $A$1是行列绝对引用dao&#xff0c;上下拉公式的时候不会变化 $A1&#xff0c;是行绝对引用&#xff0c;上下拉公式的时候会变化&#xff0c;$A2&am…

select * 排除字段_编写 SQL 的排除联接

有两个表&#xff0c;就叫作源表和目标表吧。它们有一个相同的字段&#xff0c;通过该字段可以把源表和目标表关联在一起&#xff0c;我们希望从源表中检索到的记录里的关联字段的值没有存在目标表中。举个例子&#xff0c;源表 dept&#xff0c;目标表 emp&#xff0c;获取 de…

JS中调用bignumber处理高精度小数运算

ignumber.js用于数字精度要求较高的计算。 bignumber.js源码地址&#xff1a;https://github.com/MikeMcl/bignumber.js 1.下载bignumber.js。 下载地址&#xff1a;https://github.com/MikeMcl/bignumber.js/releases 2.引入js。 3.示例 html: <div><label>数1&am…

centos8安装搜狗输入法_搜狗拼音输入法去广告版

搜狗输入法是搜狗公司2006年6月推出的一款汉字输入法工具。与传统输入法不同&#xff0c;搜狗输入法是第一款为互联网而生的输入法——它通过搜索引擎技术&#xff0c;将互联网变成了一个巨大的“活”词库。应该有许多人电脑上都装了吧&#xff0c;不过一般下载的版本天天弹广告…

Project查看资源分配情况

选择 资源图表&#xff0c;点击 格式&#xff0c;在图表里选择

webbrowser实现input tab事件_如何合理构造一个Uploader工具类(设计到实现)

作者&#xff1a;Chaser (本文来自作者投稿) 原文地址&#xff1a;https://juejin.im/post/5e5badce51882549652d55c2源码地址&#xff1a;https://github.com/impeiran/Blog/tree/master/uploader前言本文将带你基于ES6的面向对象&#xff0c;脱离框架使用原生JS&#xff…

小达人点读笔的任我贴贴纸怎么使用?

小达人点读笔是一款高性能、高容量点读笔。其自身的开放性、共享性、传播性让可读书籍及音频资源真正的达到了海量且优质有用。 下面我们来认识一下标配中任我贴上的贴纸&#xff1a; 智能贴 用于已经布有二维码的有声图书的封面&#xff0c;比如律动英语&#xff0c;成长一线&…

vscode必备插件_10个必备的Visual Studio Code (VS code)插件

我基本上每天都用vs code&#xff0c;我喜欢的小巧&#xff0c;开源&#xff0c;免费并且非常强大。尤其它非常多的插件可以免费使用。这里我把经常用插件介绍给大家&#xff0c;希望大家留言讨论我把VS code 插件分两类&#xff0c;一类是处理可视化的&#xff0c;比如说颜色&…

软考官方教材:信息系统项目管理师教程(第三版)

2020年下半年信息系统项目管理师考试官方教材将继续使用清华大学出版社出版的信息系统项目管理师教程第3版&#xff08;特别注意&#xff0c;有某些辅导资料也打着信息系统项目管理师教程第3版的旗号&#xff0c;各位考生一定要看准官方指定教材是由全国计算机专业技术资格考试…

centos挂载windows共享目录

2019独角兽企业重金招聘Python工程师标准>>> 在windows中创建一个共享文件夹记住这个网络路径&#xff0c; 在centos上新建文件夹/mnt/MyShare $> mkdir /mnt/MyShare挂载 username用户名.password登录密码 $> Sudo mount -t cifs -o username用户名,pass…

博阅likebook alita专用pdf制作

适合博阅likebook alita带手写的。 先上效果图&#xff0c;左边是正文&#xff0c;右边有留白可以写读书笔记 这样做有什么好处&#xff1f; pdf从阅读器里复制出来&#xff0c;在电脑打开&#xff0c;笔记也会有。笔记是直接记录在pdf上的&#xff0c;相当于pdf上的批注。 …

esc键没反应_有机人名反应——Brown 硼氢化反应(Brown Hydroboration)

Brown 硼氢化反应&#xff08;Brown Hydroboration&#xff09;反应机理链接&#xff1a;http://chem.kingdraw.cn/Shortlink?id20200624161301Brown硼氢化反应&#xff0c;是指乙硼烷在醚类溶液中离解成的甲硼烷以B-H键与烯烃、炔烃的不饱和键加成&#xff0c;生成有机硼化合…

修改Navicat数据库自动备份目录

1.右键连接&#xff0c;选择“编辑连接” 2. 选择“高级”&#xff0c;设置位置

python图形界面编程库_Python支持哪些图形界面的第三方库

Python支持哪些图形界面的第三方库 发布时间&#xff1a;2020-11-09 10:37:56 来源&#xff1a;亿速云 阅读&#xff1a;58 作者&#xff1a;小新 这篇文章给大家分享的是有关Python支持哪些图形界面的第三方库的内容。小编觉得挺实用的&#xff0c;因此分享给大家做个参考。一…

成为中国特色项目经理,走上人生巅峰

今天是秋分&#xff0c;写在项目经理6周年的总结 落叶知秋&#xff0c;情谊如酒&#xff0c;风渐凉时有喜无忧&#xff1b; 岁月流走&#xff0c;蓦然回首&#xff0c;一声问候醇绵依旧&#xff1b; 有情相守&#xff0c;不离左右&#xff0c;含笑送出这份问候。 -----------…

项目经理到底要不要懂技术?

不难发现&#xff0c;高薪项目经理岗位&#xff0c;往往对项目经理有技术要求。为什么会这样&#xff1f; 存在即合理&#xff0c;一定是现实中需要&#xff0c;项目实施过程中有必要。 想起了自己以前有次面试&#xff0c;二面是公司总经理&#xff0c;总经理说&#xff1a;…

git 可视化工具_Git的基本使用(二)

通过前文Git的基本使用(一)的学习&#xff0c;相信大家对如何将iOS项目通过Git传到GitHub账户上有了一个基本的了解&#xff0c;其过程是相对繁琐和容易出错的。本文将告诉大家借助工具来帮助我们实现这些操作&#xff0c;并对前文进行进一步补充。一、两个软件Visual Studio C…

小米8配哪个版本的MIUI?

小米8之前我是忠实的魅粉&#xff0c;魅族手机用过M8&#xff0c;MX3&#xff0c;note5&#xff0c;MX6 pro。 魅族真的是被联发科的cpu坑了&#xff0c;一核有难&#xff0c;八核围观。 入手小米8&#xff0c;miui是9&#xff0c;一路跟着系统自动更新&#xff0c;更新到了12。…

3D设计桌面云

榕力3D设计桌面云方案&#xff0c;为使用GPU高负载应用的设计师们提供强大支持&#xff0c;如3D建模、光线追踪、渲染计算等领域&#xff0c;带来极致流畅的3D设计桌面体验&#xff0c;同时提升工作效率、可管理性和安全性。 3D设计桌面云方案满足了工业客户在专业设计场景中的…