代码拉取完成,页面将自动刷新
项目主要通过Github API爬取Github热门项目996.ICU中Issues页面的10037条讨论数据和39987条点了star的程序员Github个人信息数据,并且用这些数据对抵制996的程序员进行画像
主要的文件结构为:
├── ICU996 Scrapy爬虫项目
│ ├── ICU996
│ │ ├── __init__.py
│ │ ├── items.py items文件
│ │ ├── middlewares.py 中间件文件
│ │ ├── pipelines.py 管道文件
│ │ ├── settings.py 设置文件
│ │ ├── spiders
│ │ │ ├── __init__.py
│ │ │ └── a996.py 爬虫文件
│ │ └── stargazers.csv 点了star的程序员简要数据,主要从这里提取个人简介页面的url,从数据下载处下载
│ └── scrapy.cfg
└── analysis 数据分析
├── 996.ipynb Jupyter notebook代码
├── stopwords.txt 停用此表,用于绘制词云图
├── issues_data.csv 爬取回来的issues数据,从数据下载处下载
└── users_data.csv 爬取回来的users数据,从数据下载处下载
Settings
——Developer settings
——Personal access tokens
——Generate new token
,自行申请就好,记得把read:user这一项勾上,因为后面我们要请求user的个人公开信息项目中的爬虫仅仅是爬取Github个人公开信息的,其它的API如下:
https://api.github.com/repos/996icu/996.ICU/issues?page=()&access_token=(), 其中page(页面)参数和access_token参数(你申请回来的token)需自行传递
# start_requests可以这样写
def start_requests(self):
urls = ['https://api.github.com/repos/996icu/996.ICU/issues?page={}&access_token=xxx'.format(i) for i in range(1, 400)]
random.shuffle(urls) # 这里爬400页issues数据,random shuffle一下可以保证爬的数据更全一些
for url in urls:
yield scrapy.Request(url=url, callback=self.parse, dont_filter=True)
https://api.github.com/repos/996icu/996.ICU/stargazers?page=()&access_token=(), 其中page(页面)参数和access_token参数(你申请回来的token)需自行传递
# start_requests可以这样写
def start_requests(self):
urls = ['https://api.github.com/repos/996icu/996.ICU/stargazers?page={}&access_token='.format(i) for i in range(1, 2239)]
random.shuffle(urls) # 这里爬2239页stargazers数据,当然现在已经不止那么多页了,random shuffle一下可以保证爬的数据更全一些
for url in urls:
yield scrapy.Request(url=url, callback=self.parse, dont_filter=True)
注:具体分析说明可以关注微信公众号:Alfred数据室,阅读对应文章《大胆,都是哪些程序员在反对996?!》
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。