用python根据关键字爬取Github上包含某关键字的代码链接

本文介绍了如何使用Python爬虫结合Github API,爬取并存储包含特定关键字的代码链接。首先,通过爬虫获取包含关键字的库名,再利用Github API获取相关代码链接。详细步骤包括登录验证、网页解析、API调用和JSON文件处理。
摘要由CSDN通过智能技术生成

0.项目背景

导师的一篇论文需要用到包含某一个关键字Github上的代码片段,所以我写了一个爬虫项目将github上面包含某一关键字的代码链接全部爬取出来,并存入csv文件中。

1.开发环境和工具模块

python版本:python 3.6

开发用的IDE:pycharm

所用的第三方库: 爬虫:requests + BeautifulSoup

                          github官方API: https://developer.github.com/v3/search/#search-code  //这是官方的API用来搜索,得到的是一个Json文件//

2.开发思路

本来的想法是直接用github官方的API直接得到一个JSON文件然后再去解析,但是13年以后,search-code的这个API就不能在全部的公共库中去搜索,搜索时,必须要指定特定的用户或者机构或者是项目库。这个是它的官方说明:            https://developer.github.com/changes/2013-10-18-new-code-search-requirements/  

  所以要换一个思路,我的想法是先用爬虫爬取所有包含某写关键字代码的库名和作者名,然后用这些库名和某一关键字作为参数去调用github的官方API,通过解析返回的JSON文档,得到相关代码的链接和一些其他的信息。

3.项目分析

    3.1  获取包含某关键字代码的库名

	def parse_keyword(self, keyword):
		# 解析登陆以后的页面,筛选出包含这个关键字的python代码
		user_repositorys = set()  # 集合用来存放作者名和库名
		
			for i in range(101): #github上只显示前一百页的信息
				url = "https://github.com/search?l=Python&p={id}&q={keyword}&type=Code".format(id=i+1, keyword=keyword)  # 循环的爬取页面信息
                #需要登录验证
				resp = self.session.get(url=url, headers=self.login_headers, verify=False)
				soup = BeautifulSoup(resp.text, "lxml")#解析信息
                #通过标签可以筛序信息
				pattern = soup.find_all('a', class_='text-bold')

				for item in pattern: #将库名和作者名存入集合之中
					print(item.string)
					user_repositorys.add(item.string)




       上面代码主要是有两个问题要解决,第一个是github上爬取公共库需要登录验证,我参考的是这位作者的方法:https://blog.csdn.net/killeri/article/details/86093665</

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值