reactjs wordpress,哈尔滨seo优化排名推广,静态营销网站代码,su域名注册原标题#xff1a;听说你没有python项目可做#xff0c;我教你个方法
学习了一段时间的Python#xff0c;最近出现了“饥荒”#xff0c;感觉需要多看些代码#xff0c;多学习学习别人做些什么#xff0c;但却不知道做点什么来进行练习。
说到看代码#xff0c;我就想到…原标题听说你没有python项目可做我教你个方法
学习了一段时间的Python最近出现了“饥荒”感觉需要多看些代码多学习学习别人做些什么但却不知道做点什么来进行练习。
说到看代码我就想到了全球最大的同性交友网站GitHub。
在GitHub上面找项目还不能漫无目的的去找啊毕竟这是一个大宝库里面的内容非常丰富
不仅仅是有Python还有JS,JAVA等很多很多的语言如果一直盲目的看下去会浪费大量的时间。
所以我就打算写一个小爬虫来爬取一下GitHub上面我想要的小项目。·首先既然是要练习python的项目肯定语言是Python
·其次既然是小项目那代码不会太长我这里设置为150K-200K的文件大小这样应该项目也会比较小
·最后我如果获取的是整个GitHub上面的这个大小的python项目对我来说也是海量的所以要限制数量我这里限制为最近一个月发布的30个项目。
好了这就是我的需求了一共三点同样我们要去考虑一下这三点的内容应该如何应对。
首先第一个就是怎么去找到所有的python项目呢在这里我们使用了GitHub的API来获取项目那首先来看一下API的形式。
https://api.github.com/search/code?qlanguage:想找的语言
这个输入了之后就可以找到想找的语言的所有项目了。
但找到了并没有结束还需要给爬下来那这里面选择的是requests库通过requests对网页进行访问获取数据
import requests
GetCodeApi https://api.github.com/search/code?q
GetRepoApi https://api.github.com/search/repositories?qlanguage:python
在整个API中设置的条件还有三个还要提供文件大小以及目录
https://api.github.com/search/code?qlanguage:语言size:大小repo:目录
这里大家可能比较好奇为什么我可以构建出来这样的一个API实际上是通过GitHub的API接口网站来找的这里有一个例子我们可以看到里面有很多的字段比如说我选中的这个字段实际上就代表了这个文件的大小那也是符合我们需要的字段那就需要在这个API中体现出来。
repo这个参数在哪里呢实际上这个参数在html_url中当然啦你要是认为哪个repo是和full_name一样的话也是可以的其实我最开始也是这么认为的。
不过后来我看到了下面这个东西就认为上面的那个html_url这个更为靠谱些就选择它了。后面全部都是这个东西那就是我们所需要的了。
下面我们就要建立一个函数三个参数是需要我们自己输入的。
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里面写的这个方框中这两个值比较重要第一个带黄底的是建立时间第二个是更新时间。
框选两个是方便我们进行筛选如果想找建立时间的就用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)
这样我们就有取之不尽用之不竭的小项目可以模仿可以学习咯~
输出的结果是这样的最后我将继续扮演一个小白努力创造一个努力学习的小白形象技术代码两开花弘扬中华文化希望大家多多支持啊~返回搜狐查看更多
责任编辑