Оглавление
1. Выберите целевую страницу GitHub
2. Проанализируйте структуру сайта
3. Подготовьте инструменты и библиотеки
5. Сохраните полученные данные
В этом блоге мы рассмотрим, как написать на Python сканер, который извлекает информацию о популярных репозиториях и их вкладчиках с GitHub. Мы пройдем следующие шаги по порядку:
- Выберите целевую страницу GitHub
- Анализировать структуру сайта
- Подготовка инструментов и библиотек
- Написать сканер
- Сохраните полученные данные
Прежде чем приступить к написанию программы-краулера, убедитесь, что вы соблюдаете условия использования веб-сайта и используете технологию сканера в рамках соблюдения законодательства.
1. Выберите целевую страницу GitHub
Во-первых, нам нужно выбрать страницу GitHub для парсинга. Здесь мы берем страницу GitHub Trending в качестве примера, чтобы получить информацию о популярных репозиториях и их вкладчиках.
2. Проанализируйте структуру сайта
Далее нам необходимо проанализировать структуру целевого веб-сайта, чтобы понять, как получить необходимые данные. Вы можете использовать инструменты разработчика своего браузера (например, функцию Chrome «Проверка») для просмотра исходного кода веб-страницы или просмотра исходного кода веб-страницы напрямую.
Проанализировав структуру страницы GitHub Trending, мы обнаружили, что информация о популярном репозитории содержится в теге <h1>
, который имеет h3 lh-condensed
класс. Из этих тегов мы можем <h1>
извлечь информацию о популярных репозиториях. Информация об участниках для каждого репозитория содержится в <a>
теге с d-inline-block
классом.
3. Подготовьте инструменты и библиотеки
Прежде чем писать программу-краулер, нам нужно установить необходимые библиотеки. В этом примере мы будем использовать BeautifulSoup и библиотеку Requests. Запустите следующие команды в командной строке, чтобы установить эти библиотеки:
pip install beautifulsoup4
pip install requests
Далее мы импортируем эти библиотеки и подготовимся к написанию нашего сканера.
4. Напишите программу-краулер
Сначала создайте github_scraper.py
новый файл с именем . Это будет код нашего сканера.
Сначала импортируйте необходимые библиотеки.
import requests
from bs4 import BeautifulSoup
Далее нам нужно определить функцию для получения HTML-контента целевого веб-сайта.
def get_html(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
return None
Затем нам нужно написать функцию, которая анализирует содержимое HTML и извлекает необходимую информацию.
def parse_trending_repositories(html):
soup = BeautifulSoup(html, 'html.parser')
repos = soup.find_all('h1', class_='h3 lh-condensed')
parsed_repos = []
for repo in repos:
repo_name = repo.get_text(strip=True)
repo_url = 'https://github.com' + repo.find('a')['href']
parsed_repos.append({
'repo_name': repo_name,
'repo_url': repo_url,
})
return parsed_repos
Далее мы напишем функцию для получения информации об участниках репозитория.
def get_contributors(repo_url):
html = get_html(repo_url)
if html:
soup = BeautifulSoup(html, 'html.parser')
contributors = soup.find_all('a', class_='d-inline-block')
parsed_contributors = []
for contributor in contributors:
parsed_contributors.append({
'contributor_name': contributor['aria-label'],
'contributor_profile': contributor['href'],
})
return parsed_contributors
else:
return None
Наконец, нам нужно написать основную функцию, которая запускает сканер и сохраняет результаты.
def main():
url = 'https://github.com/trending'
html = get_html(url)
if html:
trending_repositories = parse_trending_repositories(html)
for repo in trending_repositories:
repo['contributors'] = get_contributors(repo['repo_url'])
# 保存结果 with open('trending_repos.json', 'w') as f:
import json
json.dump(trending_repositories, f, indent=2)
print("爬取完成,结果已保存到trending_repos.json文件中。")
else:
print("获取网页内容失败,请检查URL是否正确。")
if __name__ == '__main__':
main()
5. Сохраните полученные данные
В приведенном выше коде мы сохранили просканированные популярные репозитории и информацию об их вкладчиках в формате JSON в trending_repos.json
файл с именем . Вы можете проверить этот файл, чтобы подтвердить результат.
эпилог
В этом сообщении блога мы подробно описали, как написать на Python сканер для получения популярных репозиториев и их участников с GitHub. Конечно, это всего лишь простой пример. Вы можете изменить код в соответствии со своими потребностями, чтобы получить информацию с других страниц GitHub, или дополнительно оптимизировать код, чтобы повысить эффективность и скорость работы сканера. Обратите внимание, что при использовании методов парсинга всегда соблюдайте условия использования сайта и следите за тем, чтобы ваши действия соответствовали закону.