Skip to content

Commit 74532e1

Browse files
committed
add: Add githubSearch.py
1 parent 6e386d5 commit 74532e1

File tree

3 files changed

+110
-2
lines changed

3 files changed

+110
-2
lines changed

extendingPython/Search/__init__.py

Whitespace-only changes.
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import time
2+
3+
from selenium import webdriver
4+
from selenium.webdriver.chrome.service import Service as ChromeService
5+
from selenium.webdriver.common.by import By
6+
from selenium.webdriver.edge.service import Service as EdgeService
7+
from selenium.webdriver.firefox.service import Service as FirefoxService
8+
from webdriver_manager.chrome import ChromeDriverManager
9+
from webdriver_manager.firefox import GeckoDriverManager
10+
from webdriver_manager.microsoft import EdgeChromiumDriverManager
11+
12+
13+
class GithubSearch:
14+
def __init__(self):
15+
self.driver = None
16+
17+
def open_browser(self, webdriveType: str):
18+
if webdriveType.lower() == 'firefox':
19+
service = FirefoxService(GeckoDriverManager().install())
20+
self.driver = webdriver.Firefox(service=service)
21+
self.driver.implicitly_wait(10)
22+
elif webdriveType.lower() == 'edge':
23+
service = EdgeService(EdgeChromiumDriverManager().install())
24+
self.driver = webdriver.Edge(service=service)
25+
self.driver.implicitly_wait(10)
26+
elif webdriveType.lower() == 'chrome':
27+
service = ChromeService(ChromeDriverManager().install())
28+
self.driver = webdriver.Chrome(service=service)
29+
self.driver.implicitly_wait(10)
30+
31+
def searchRepositories(self, keyword):
32+
res = []
33+
queue = []
34+
queue.append("https://github.com/search?q=" + keyword + "&type=repositories")
35+
while len(queue) != 0:
36+
url = queue.pop(0)
37+
self.driver.get(url)
38+
time.sleep(3)
39+
res.append(self.driver.page_source)
40+
self.next_page = self.driver.find_elements(By.XPATH, "//a[@rel='next' and @aria-label='Next Page']")
41+
if len(self.next_page) != 0:
42+
queue.append(self.next_page[0].get_attribute('href'))
43+
return res
44+
45+
def searchCode(self, keyword):
46+
self.driver.get("https://github.com/search?q=" + keyword + "&type=code")
47+
time.sleep(3)
48+
return self.driver.page_source
49+
50+
def searchUsers(self, keyword):
51+
self.driver.get("https://github.com/search?q=" + keyword + "&type=users")
52+
time.sleep(3)
53+
return self.driver.page_source
54+
55+
def searchIssues(self, keyword):
56+
self.driver.get("https://github.com/search?q=" + keyword + "&type=issues")
57+
time.sleep(3)
58+
return self.driver.page_source
59+
60+
def searchPullRequests(self, keyword):
61+
self.driver.get("https://github.com/search?q=" + keyword + "&type=pullrequests")
62+
time.sleep(3)
63+
return self.driver.page_source
64+
65+
def searchDiscussions(self, keyword):
66+
self.driver.get("https://github.com/search?q=" + keyword + "&type=discussions")
67+
time.sleep(3)
68+
return self.driver.page_source
69+
70+
def searchCommits(self, keyword):
71+
self.driver.get("https://github.com/search?q=" + keyword + "&type=commits")
72+
time.sleep(3)
73+
return self.driver.page_source
74+
75+
def searchTopics(self, keyword):
76+
self.driver.get("https://github.com/search?q=" + keyword + "&type=topics")
77+
time.sleep(3)
78+
return self.driver.page_source
79+
80+
def searchWikis(self, keyword):
81+
self.driver.get("https://github.com/search?q=" + keyword + "&type=wikis")
82+
time.sleep(3)
83+
return self.driver.page_source
84+
85+
def searchPackages(self, keyword):
86+
self.driver.get("https://github.com/search?q=" + keyword + "&type=packages")
87+
time.sleep(3)
88+
return self.driver.page_source
89+
90+
def searchMarketplace(self, keyword):
91+
self.driver.get("https://github.com/search?q=" + keyword + "&type=marketplace")
92+
time.sleep(3)
93+
return self.driver.page_source
94+
95+
def close_browser(self):
96+
self.driver.quit()
97+
98+
def __del__(self):
99+
self.close_browser()
100+
101+
102+
if __name__ == '__main__':
103+
GITHUB = GithubSearch()
104+
GITHUB.open_browser('firefox')
105+
print(GITHUB.searchRepositories('python'))
106+
# baidu.close_browser()

requirements.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
setuptools==70.0.0
1+
setuptools~=68.2.0
22
pyhttpx~=2.10.12
33
requests~=2.32.3
4-
pymysql~=1.1.0
4+
pymysql~=1.1.0
5+
selenium~=4.27.1
6+
webdriver-manager

0 commit comments

Comments
 (0)