引入
相信有朋友遇到需要批量爬取Github用户粉丝和关注用户的主页链接
,然后进入对应主页链接进行用户信息分析的工作。
为了提高根据用户主页链接对用户信息进行分析的效率,可以在分析前对需要分析的用户主页链接进行筛选,进而选出更加值得分析的用户主页链接,提高整体的分析效率。
在我的一篇文章介绍了如何爬取用户主页链接,有兴趣的同学可以去看一下,本文主要介绍如何进行筛选。
有兴趣的同学可以去看一下之前的文章
Python爬虫学习链接: Python爬虫:爬取Github用户粉丝和关注用户的主页链接
一、筛选条件设定
筛选的条件设定可以有很多,按照自己的需求来设定就好。我设定的条件是:仓库数据和点赞数不要过多或者过少,要在一个合理的区间。数量过少说明可能是不活跃用户,数量过多可能涉及的类别很广泛,两种情况都不利于最终的用户分析结果,因此我们可以做一个简单的筛选。
具体代码如下:
for url in toCheckUrl:
secondurl = f'https://github.com/{url}'
response2 = requests.get(secondurl, headers=headers, timeout=100, verify=False)
html2 = response2.text
soup2 = BeautifulSoup(html2, 'lxml')
repNumber = '0'
starNumber = '0'
//有相同的标签名,因此我根据标签的排列顺序选取自己的需要的数据
if (len(soup2.find_all('span', class_='Counter')) > 1):
repNumber = soup2.find_all('span', class_='Counter')[0].text
if(len(soup2.find_all('span', class_='Counter')) > 4):
starNumber = soup2.find_all('span', class_='Counter')[3].text
//接下来是易错点:
//一定要考虑到Github网站中点赞数可能出现1.3k这种情况,无法直接用来进行数据大小的判断,因此我们可以直接排除掉或者转化为常规数字,我这里选择的是直接排除掉
if ('k' not in starNumber) and ('k' not in repNumber) and 10 <= int(repNumber) + int(starNumber) <= 500 :
follower_names.append(url)
wb.cell(row=count, column=1, value=f'https://github.com/{url}?tab=repositories')
wb.cell(row=count, column=2, value=url)
count += 1
总结
用户主页链接筛选后再分析的效果有明显的改善,去除了很多不利影响,分析出来的数据更加准确客观。
希望对大家有用!