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.
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:
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.
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:
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.
Taispeánfaidh an chuid seo conas stórtha GitHub a scrape. Céimeanna tábhachtacha chun an scraper a dhéanamh ná:
As seo amach, roinnfimid na sonraí do na céimeanna seo go léir mar aon le script scríobtha go hiomlán.
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
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
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)
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í.
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:
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.
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.
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().
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.
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.
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()
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(',', '')
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(',', '')
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(',', '')
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.
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
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)
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)
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