Conas stórtha GitHub poiblí a scrape ag baint úsáide as Python?

Tuairimí: 0

San alt seo, déanfaimid anailís ar conas stórtha GitHub a scrape ag baint úsáide as Python. Déanfaimid athbhreithniú ar leabharlanna aitheanta ar nós BeautifulSoup agus Requests agus tabharfaimid míniú mionsonraithe agus tabharfaimid míniú mionsonraithe agus scrapáil GitHub Script ionas gur féidir leat leanúint go héasca.

Cén fáth a scríobann siad stórtha gitHub?

Cad é atá ag scríobadh GitHub agus cad chuige a bhfuil sé? Tá go leor cuspóirí ann chun é a úsáid, ach áirítear ar an gceann is minice:

  • Monatóireacht a dhéanamh ar dhul chun cinn teicneolaíochta. Is bealach iontach é monatóireacht a dhéanamh ar réaltaí agus ar stórtha chun treochtaí a rianú le teangacha cláir, creataí agus leabharlanna. Is féidir leis an bhfaisnéis seo a bheith an -tábhachtach maidir le cinntí a dhéanamh a bhaineann le cur i bhfeidhm teicneolaíochtaí, forbairt scileanna, nó leithdháileadh acmhainní.
  • Stór Clársceidealaithe a úsáid. Tá raidhse de thionscadail foinse oscailte, samplaí agus réitigh le fáil ar GitHub. Dá bhrí sin, tá méid ollmhór eolais agus teicnící cláir atá úsáideach chun críocha oideachais, ag feabhsú scileanna cláir, agus tuiscint ar chur i bhfeidhm na teicneolaíochta ar fáil go héasca ar an ardán.

Ní hamháin go dtugann GitHub óstáil do stórtha, ach tá bonn ollmhór úsáideora acu, agus is rogha iontaofa iad an -cháil.

Tá an fhaisnéis atá stóráilte ar GitHub úsáideach chun patrúin dul chun cinn na teicneolaíochta a rianú chomh maith le forbairt bogearraí a fheabhsú. Tá an fhaisnéis seo ríthábhachtach chun coinneáil suas le hiomaitheoirí i saol na teicneolaíochta faisnéise.

Leabharlanna agus uirlisí riachtanacha chun GitHub a scríobadh

Nuair a thagann sé chun leathanach gréasáin a scríobadh, is í Python an teanga is éasca le hoibriú leis, ós rud é go bhfuil a chuid leabharlanna agus modúil an oiread sin. D'fhonn python a scríobadh, caithfear na modúil seo a leanas a chur leis:

  • requests: cliant Lib a choinníonn na hiarratais agus na freagraí HTTP, agus an ceann is mó a úsáidtear.
  • BeautifulSoup: sofaisticiúil nuair a thagann sé chun sonraí a bhaint as HTML mar go dtagann sé le gnéithe ardleibhéil nuair a thagann sé chun sonraí a loingseoireacht agus a aisghabháil.
  • Selenium: seolann sé fíor -bhrabhsálaí agus cuireann sé ar chumas cliceáil agus clóscríobh ar ghnéithe den leathanach.

Is féidir é seo a dhéanamh go héasca le húsáid uirlisí scríobtha GitHub. Mar sin féin, lig dúinn cur síos a dhéanamh ar conas é sin a dhéanamh.

Script Scraping GitHub Script le BeautifulSoup a thógáil

Taispeánfaidh an chuid seo conas stórtha GitHub a scrape. Céimeanna tábhachtacha chun an scraper a dhéanamh ná:

  1. An bonn socraithe a chruthú - a bhfuil python á íoslódáil agus leabharlanna ábhartha a íoslódáil.
  2. An cód HTML den leathanach GitHub a shábháil.
  3. Scrúdú a dhéanamh ar leagan amach an leathanaigh chun na míreanna riachtanacha a aithint.
  4. Faisnéis a bhailiú lena mbaineann ainmneacha, tuairiscí, agus méid na réaltaí a bhí i measc rudaí eile a fháil.
  5. Stóráil sonraí chun cineálacha córais a chomhdú.

As seo amach, roinnfimid na sonraí do na céimeanna seo go léir mar aon le script scríobtha go hiomlán.

Céim 1: Do thimpeallacht tionscadail Python a chur ar bun

Déan cinnte go bhfuil python agat ar do mheaisín. Ansin, déan timpeallacht fhíorúil nua Python chun an próiseas a scríobadh chun Github a scríobadh.


python -m venv github_scraper
source github_scraper/bin/activate  # Do MacOS agus Linux
github_scraper\Scripts\activate     # Le haghaidh fuinneoga

Céim 2: Leabharlanna Python Riachtanacha a shuiteáil

Mar a dúirt muid cheana, cabhróidh BeautifulSoup agus requests le stórtha GitHub a scríobadh. Sa timpeallacht fhíorúil atá gníomhachtaithe faoi láthair, cuir an t -ordú seo i gcrích chun iad a chur san áireamh i do spleáchais ar do thionscadal:


pip install beautifulsoup4 requests

Céim 3: An Leathanach Sprioc GitHub a rochtain agus a íoslódáil

Roghnaigh aon stór ónar mhaith leat Scraping GitHub a dhéanamh. Ar an gcéad dul síos, sainmhínigh an nasc in athróg, ansin déan iarratas HTTP a gheobhaidh an cód leathanach.


url = "https://github.com/TheKevJames/coveralls-python"
response = requests.get(url)

Céim 4: An struchtúr HTML a thuiscint agus a pharsáil

Chun anailís a dhéanamh ar do HTML, cuireann tú é i BeautifulSoup.


soup = BeautifulSoup(page.text, 'html.parser')

An BeautifulSoup() ní mór dhá rud a sholáthar don tógálaí.

  1. Teaghrán ina bhfuil an t-ábhar HTML, stóráilte sa cheannaireachán page.text.
  2. An parsálaí a úsáideann Beautiful Soup: is é “html.parser” ainm an pharsálaí HTML ionsuite i Python.

Déanfaidh BeautifulSoup an HTML a pharsáil agus cruthófar struchtúr crainn. Go sonrach, tá na modhanna go léir sa athróg soup a theastaíonn chun eilimintí ábhartha a roghnú ón gcrann DOM, mar shampla:

  • find(): filleann sé an chéad eilimint HTML a fhreagraíonn don straitéis roghnóra a tugadh.
  • find_all(): filleann sé liosta d’eilimintí HTML a mheaitseálann leis an straitéis roghnóra a tugadh.
  • select_one(): filleann sé an chéad eilimint HTML a mheaitseálann leis an roghnóir CSS a tugadh.
  • select(): filleann sé liosta d’eilimintí HTML a fhreagraíonn don roghnóir CSS a tugadh.

Céim 5: An Leathanach Sprice a Anailísiú le haghaidh Sonraí Ábhartha

Seo céim thábhachtach eile: eilimintí simplí HTML a roghnú agus sonraí Github a scrabhadh uathu. Tagann an chéim seo roimh an script Python a scríobh do stórtha Github.

Sula scrabhálann tú Github, déan tú féin a chur ar an eolas leis an leathanach gréasáin féin. Ina dhiaidh sin, oscail na huirlisí forbróra trí F12 a chliceáil. Nuair atá an cód oscailte agat, tabharfaidh tú faoi deara nach bhfuil ranganna uathúla ná tréithe ag go leor eilimintí ar an leathanach, rud a fhágann go bhfuil sé deacair nascleanúint a dhéanamh chuig an eilimint chuí. Téigh tríd an leathanach agus ullmhaigh sonraí a bhaint amach.

Céim 6: Sonraí na Stórtha a Bhaint Amach

Anois táimid réidh chun script Python a chruthú a chabhróidh linn stórtha GitHub a scrabhadh. Is féidir leis an script seo faisnéis úsáideach atá stóráilte ar GitHub a bhaint amach, cosúil le réaltaí, cur síos, na tiomnaí is déanaí, srl. Chun seo a dhéanamh, caithfimid na gnéithe riachtanacha a shonrú agus na luachanna téacs comhfhreagracha a aisghabháil.

  • Ainm an stórais:
  • 
    repo_title = soup.select_one('[itemprop="name"]').text.strip()
    

    Tá tréith itemprop="name" ag an eilimint seo le luach uathúil, agus mar sin bainimid amach é. Tá spásanna agus carachtair línte nua i réimsí téacs ar GitHub de ghnáth agus is féidir iad a ghlanadh le strip().

  • Brainse reatha:
    
    git_branch_icon_html_element = soup.select_one('[class="Box-sc-g0xbh4-0 ffLUq ref-selector-button-text-container"]').text.split()
    

    Tabhair faoi deara nach bhfuil modh níos simplí ann chun an eilimint HTML a roghnú a bhfuil teideal an phríombrainse ann. Cad is féidir leat a dhéanamh? Roghnaigh rang uathúil agus faigh an téacs.

  • Tiomantas deiridh:
    
    relative_time_html_element = soup.select_one('relative-time')
    latest_commit = relative_time_html_element['datetime']
    

    Chonaiceamar go raibh an clib relative-time, ina stóráladh tiomantas deireanach an úsáideora, roghnaithe cheana féin, agus go raibh an dáta faighte tríd an tréith datetime.

Bailigh faisnéis atá ar thaobh na láimhe clé: cur síos, réaltaí, amharcanna, forcanna.

  • Cur síos:
    
    bordergrid_html_element = soup.select_one('.BorderGrid')
    about_html_element = bordergrid_html_element.select_one('h2')
    description_html_element = about_html_element.find_next_sibling('p')
    description = description_html_element.get_text().strip()
    
  • Réaltaí:
    
    star_icon_html_element = bordergrid_html_element.select_one('.octicon-star')
    stars_html_element = star_icon_html_element.find_next_sibling('strong')
    stars = stars_html_element.get_text().strip().replace(',', '')
    
  • Amharcanna:
    
    eye_icon_html_element = bordergrid_html_element.select_one('.octicon-eye')
    watchers_html_element = eye_icon_html_element.find_next_sibling('strong')
    watchers = watchers_html_element.get_text().strip().replace(',', '')
    
  • Forcanna:
    
    fork_icon_html_element = bordergrid_html_element.select_one('.octicon-repo-forked')
    forks_html_element = fork_icon_html_element.find_next_sibling('strong')
    forks = forks_html_element.get_text().strip().replace(',', '')
    

Céim 7: Comhaid Readme a Bhailiú agus a Anailísiú

Tá an comhad readme an-tábhachtach. Soláthraíonn sé cur síos ar na stórtha agus treoracha maidir le conas an cód a chur i bhfeidhm. Má dhéanann tú seiceáil ar an gcomhad readme.md, tabharfaidh tú faoi deara cén nasc atá aige:


https://raw.githubusercontent.com///readme.md

Ós rud é go bhfuil againn, is féidir linn an URL a chruthú go ríomhchláraithe ag úsáid f-string, é a úsáid, agus iarratas HTTP a dhéanamh chun cód an chomhaid a fháil.


readme_url = f'https://github.com/TheKevJames/coveralls-python/blob/{main_branch}/readme.rst'
readme_page = requests.get(readme_url)

readme = None
if readme_page.status_code != 404:
    readme = readme_page.text

Cuimhnigh seiceáil ar earráid 404 chun cosc a chur ar inneachar an leathanaigh GitHub 404 a shábháil má tá easpa comhaid readme sa stór.

Céim 8: Sonraí Scriosta a Eagrú agus a Stóráil go hÉifeachtach

Stórálfar an fhaisnéis ar fad i bhfoclóir amháin ionas go mbeidh sé éasca iad a scríobh isteach i gcomhad JSON.


repo = {}
repo['name'] = repo_title
repo['latest_commit'] = latest_commit
repo['main_branch'] = main_branch
repo['description'] = description
repo['stars'] = stars
repo['watchers'] = watchers
repo['forks'] = forks
repo['readme'] = readme

Céim 9: Sonraí Scriosta a Easpórtáil i bhFormáid JSON

Bainfimid leas as an leabharlann ionsuite Python chun na sonraí a anailísiú agus iad a stóráil i bhformáid JSON, atá oiriúnach do struchtúir neadaithe cosúil leis an gcás seo inar liostaí atá i gceist leis na hailt.


with open('github_data.json', 'w', encoding='utf-8') as json_file:
  json.dump(repo, json_file, ensure_ascii=False, indent=4)

Céim 10: Gach Céim a Chomhtháthú i Script Iomlán


import json
import requests
from bs4 import BeautifulSoup

url = "https://github.com/TheKevJames/coveralls-python"
response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")

repo_title = soup.select_one('[itemprop="name"]').text.strip()

# craobh
main_branch = soup.select_one(
   '[class="Box-sc-g0xbh4-0 ffLUq ref-selector-button-text-container"]').text.split()

# tiomantas is déanaí
relative_time_html_element = soup.select_one('relative-time')
latest_commit = relative_time_html_element['datetime']

# saghas
bordergrid_html_element = soup.select_one('.BorderGrid')
about_html_element = bordergrid_html_element.select_one('h2')
description_html_element = about_html_element.find_next_sibling('p')
description = description_html_element.get_text().strip()

# seinnéad
star_icon_html_element = bordergrid_html_element.select_one('.octicon-star')
stars_html_element = star_icon_html_element.find_next_sibling('strong')
stars = stars_html_element.get_text().strip().replace(',', '')

# ladóirí
eye_icon_html_element = bordergrid_html_element.select_one('.octicon-eye')
watchers_html_element = eye_icon_html_element.find_next_sibling('strong')
watchers = watchers_html_element.get_text().strip().replace(',', '')

# forcanna
fork_icon_html_element = bordergrid_html_element.select_one('.octicon-repo-forked')
forks_html_element = fork_icon_html_element.find_next_sibling('strong')
forks = forks_html_element.get_text().strip().replace(',', '')

# léighmé
readme_url = f'https://github.com/TheKevJames/coveralls-python/blob/{main_branch}/readme.rst'
readme_page = requests.get(readme_url)

readme = None
if readme_page.status_code != 404:
   readme = readme_page.text

repo = {}
repo['name'] = repo_title
repo['latest_commit'] = latest_commit
repo['main_branch'] = main_branch
repo['description'] = description
repo['stars'] = stars
repo['watchers'] = watchers
repo['forks'] = forks
repo['readme'] = readme

with open('github_data.json', 'w', encoding='utf-8') as json_file:
   json.dump(repo, json_file, ensure_ascii=False, indent=4)

Scrabhadh GitHub: Conclúid

Rinneamar scrúdú ar an bpróiseas chun script scrabhadh GitHub a thógáil do stórtha le cabhair ó BeautifulSoup agus Requests. Tá a fhios agat anois conas leathanaigh ghréasáin a rochtain, sonraí ábhartha a bhaint amach, agus iad a ionchódú ar bhealach atá furasta d’úsáideoirí. Beidh scileanna den chineál seo úsáideach chun tionscadail aitheanta a anailísiú, athruithe ar an gcód a rianú, nó tuarascálacha a ghiniúint.

Mar sin féin, bí cúramach agus bain úsáid chiallmhar as. Go minic, tá API ar fáil ar GitHub a bheidh níos simplí agus níos praiticiúla le húsáid. Má shocraíonn tú dul i mbun scrabhadh gréasáin, bí cinnte go gcomhlíonann tú treoirlínte an tsuímh agus ná déan an freastalaí a ró-ualach le hiarratais iomarcacha.

Tuairimí:

0 tuairimí