Skip to content

Python实现的LeetCode爬虫。爬取LeetCode题目描述和提交的代码。

Notifications You must be signed in to change notification settings

zhantong/leetcode-spider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LeetCode-Spider

Python实现的LeetCode爬虫。爬取LeetCode题目描述和提交的代码。

特点

  • 支持爬取题目列表,保存为本地CSV/Excel文件。
  • 支持爬取题目描述,保存为本地HTML文件。
  • 支持爬取用户提交的代码,保存为如_.py、_.java、*.cpp等源码。
  • 高速并发下载题目描述和提交的代码。
  • 支持增量更新,当本地有缺损或LeetCode有新内容(题目/提交的代码)时,以增量形式更新。

使用

参考example.py。

克隆或下载本仓库

使用git clone或直接下载本仓库代码,并切换工作目录到本项目根目录

安装依赖

本项目需要用到第三方库lxmlopenpyxl(如果需要保存为Excel),可通过如下pip命令安装:

pip3 install lxml
pip3 install openpyxl

获取问题列表(必须)

from Extractor import Extractor

extractor = Extractor()

# 获取问题列表(保存在数据库leetcode.db中,若希望获取问题状态(是否ac),需首先登录)
# extractor.login('[email protected]', '123456')
extractor.update_problem_list()

获取得到的数据保存在leetcode.db数据库中。

导出问题列表

可将问题列表导出为CSV/Excel格式文件,参考下面的截图。

# 导出问题列表为中文CSV文件
extractor.save_problem_list('problems.csv')

# 导出问题列表为英文Excel文件
extractor.save_problem_list('problems.xlsx', 'excel', 'English')

CSV

Excel

获取问题描述HTML文件

需先获取问题列表

# 获取问题描述HTML文件(保存在descriptions文件夹下,需要先获取问题列表)
extractor.update_descriptions()

根据问题列表增量多线程并发下载新的问题描述,并将HTML文件保存到descriptions文件夹下。文件夹结构为:

descriptions
    001. Two Sum.html
    002. Add Two Numbers.html
    003. Longest Substring Without Repeating Characters.html
    ...

获取提交的代码

需先获取问题列表

# 获取提交的代码(保存在submissions文件夹下,需要先获取问题列,并登录)
extractor.login('[email protected]', '123456')
extractor.update_submissions()

这里需要先输入用户名和密码登录,然后才能获取到此用户提交的代码。

根据问题列表增量多线程并发下载新的提交代码,并将其保存到submissions文件夹下。文件夹结构为:

submissions
    24152714
    24153189
    24165875
    ...

导出提交的代码

需先获取提交的代码

# 导出提交的代码(保存在out_submissions文件夹下,需先获取提交的代码)
extractor.output_submissions()

导出之前保存的文件为格式化文件结构(默认仅导出每种语言的最新提交版本),保存到out_submissions文件夹下。文件夹结构为:

out_submissions
    001. Two Sum
        C++
            Solution.cpp
        Java
            Solution.java
        Python
            Solution
    002. Add Two Numbers
        C++
            Solution.cpp
        Java
            Solution.java
        Python
            Solution
    ...

第三方依赖

About

Python实现的LeetCode爬虫。爬取LeetCode题目描述和提交的代码。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published