Когда я изучал массовое очищение, одна из идей, которая пришла мне в голову, – это скребок GitHub. Здесь я постараюсь описать каждый процесс.
Давайте начнем..
Мы должны сначала установить пару пакетов.
- Beautifulsoup
- Запросы
- htmlparser
pip install requests pip install html5lib pip install beautifulsoup4
- Затем открыть https://github.com/yourusername
- Откройте Devtools.
- Это то, что я вижу, когда открываю приборную панель и Devtools.
В то время как мы очищаем веб -сайт, нам нужны идентификатор элемента, имя класса или XPath, чтобы очистить его.
Мы будем соскребать имя, имя пользователя, нет репо, подписчиков, следующих и изображений профиля.
import requests from bs4 import BeautifulSoup import html5lib
- Импортировать модули.
r=requests.get("https://github.com/fredysomy") soup=BeautifulSoup(r.content,'html5lib')
- Сделайте запрос на веб -сайт.
Разбор HTML получен как ответ в
R.Content
Использование BeautifulSoup и HTML5LIB.Отсюда мы начинаем царапать.
namediv=soup.find("h1" ,class_="vcard-names pl-2 pl-md-0") name=namediv.find_all('span')[0].getText() u_name=namediv.find_all('span')[1].getText()
- Здесь мы получаем весь элемент в элементе названия класса
vcard-name pl-2 pl-md-0 "
- Имя и имя пользователя находятся в элементе пролета в вышеупомянутом Div.
- Мы назначили контент в переменную по имени.
- Мы находим все элементы SPAN и выбираем (0: имя, 1: имя пользователя) и получаем текст с использованием функции getText ().
statstab=soup.find(class_="flex-order-1 flex-md-order-none mt-2 mt-md-0") elements=statstab.find(class_="mb-3") followers=elements.find_all('a')[0].find('span').getText().strip(' ') following=elements.find_all('a')[1].find('span').getText().strip(' ') totstars=elements.find_all('a')[2].find('span').getText().strip(' ')
- Здесь происходит то же самое.
Последователи, следующие, Stargazers находятся внутри элемента класса имени
Flex-Order-1 Flex-MD-None MT-2 MT-MD-0
и вMB-3
который внутри этого.Давайте получим это и храним его в переменной элементов.
Получение пролета внутри Внутри элементов возвращает список.
- Последователи имеют
- Далее
- Stargazer
elements.find_all('a')[2].find('span').getText().strip(' ')
- Здесь мы получаем второй элемент индекса в элементе, а затем
getText ()
от промежутка внутри него. Мы используемполоса ('')
Чтобы удалить ненужные чистые пробелы в результате.
u_img=soup.find(class_="avatar avatar-user width-full border bg-white")['src']
- Приведенный выше код дает тег изображения И мы получаем атрибут SRC.
repo_num=soup.find(class_="UnderlineNav-body").find('span',class_="Counter").getText()
Здесь мы получаем невыполнение пользователей Repos.
Это все, что вам нужно, чтобы очистить данные пользователя с помощью Python.
Исходный код
import requests from bs4 import BeautifulSoup import html5lib r=requests.get("https://github.com/fredysomy") soup=BeautifulSoup(r.content,'html5lib') namediv=soup.find("h1" ,class_="vcard-names pl-2 pl-md-0") name=namediv.find_all('span')[0].getText() u_name=namediv.find_all('span')[1].getText() statstab=soup.find(class_="flex-order-1 flex-md-order-none mt-2 mt-md-0") elements=statstab.find(class_="mb-3") followers=elements.find_all('a')[0].find('span').getText().strip(' ') following=elements.find_all('a')[1].find('span').getText().strip(' ') totstars=elements.find_all('a')[2].find('span').getText().strip(' ') u_img=soup.find(class_="avatar avatar-user width-full border bg-white")['src'] repo_num=soup.find(class_="UnderlineNav-body").find('span',class_="Counter").getText()
- Идея состоит в том, что мы должны сделать программу для перемещения к элементу, который мы хотим, и выбрать необходимый элемент.
Ссылайте некоторые методы BeautifulSoup здесь
Я также сделал модуль PYPI для очистки GitHub. Смотрите Здесь И дайте звезду, если вам это нравится.
Если у вас есть какие -либо сомнения или вам нужно разъяснить, прокомментируйте ниже.
Оставайтесь с нами для части 2, где мы соскребят подробности репо пользователя.
Оригинал: “https://dev.to/fredysomy/scrape-github-users-details-with-python-3ce5”