Oppskrift for å hente ut dine teorier til Excel


Myheritage har innført «Theory of Family Relativity™» (TOFR) og skal man jobbe systematisk med listen kunne det vært kjekt å få tilsendt bare disse. Denne muligheten finnes ikke så jeg har lagd en måte å automatisere dette med en teknikk som kalles webscraping. PS Teoriene er basert på smart macthes og delt dna, og er bare forslag. Siden disse kan være feil er det lurt å undersøke om denne «jukse-metoden» har noe hold. «Juks» siden de bruker Big-data for å forsøke å låse slektsgåten for deg automagisk, for vil vi slektsforskere egentlig få fasiten utlevert?


NB ADVARSEL OG ANSVARSFRAKRIVELSE!

Oppskriften er teknisk og jeg kommer ikke til å drive mye gratis support for at du skal få dette til om du ikke forstår min oppskrift. Pga personvern og generell datasikkerhet kan jeg heller ikke teste dine data for å finne feil, eller optimalisere uthentingen for deg. Jeg tar heller ikke noe ansvar for problemer du kan havne i ved feilbruk. Ikke hent ut listen hundre ganger om dagen, du kan bli utestengt fra MyHeritage i kortere eller lengre tid hvis du bombarderer websiden deres. med forespørsler.... Du er herved advart.  

Forarbeid

  1. Først må du ha en nettleser som støtter bruk av chrome utvidelser. Dette kan være Chrome, Microsoft Edge, Opera eller andre. (Finnes også en firefox add-on for dere som bruker firefox)
  2. Gå til Webscraper.io og last installer utvidelsen (se bilde under)
Bilde 1 – Installer chrome utvidelse

Tilpassning av definisjonsfilen

Man kan lage sine egne JSON «definisjonsfiler» for uthenting. Jeg brukte litt tid på å lære dette og hvordan man kan redigere disse enklere. Det er lett å gjøre noe feil og jeg startet pånytt mange ganger før jeg fant en enklere måte, nemlig redigere i selve definisjonsfilen. Det er lett å rote til denne om man er unøyaktig. For å spare deg for å lære hele «opplegget» skal jeg forsøke å fortelle om det viktigste man bør kunne endre. NB Hele teksten nedenfor må kopieres og redigeres før du bruker den.

{
	"_id": "mh_tofr_flere",
	"startUrl": [
		"URL1",
		"URL2"
	],
	"selectors": [
		{
			"id": "DNA person",
			"type": "SelectorText",
			"parentSelectors": [
				"_root"
			],
			"selector": ".profile_selector span",
			"multiple": false,
			"regex": "^([^,])+",
			"delay": 0
		},
		{
			"id": "Kit",
			"type": "SelectorText",
			"parentSelectors": [
				"_root"
			],
			"selector": ".selector_header span.detail_value",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "DNA treff",
			"type": "SelectorElement",
			"parentSelectors": [
				"_root"
			],
			"selector": "div.card_container",
			"multiple": true,
			"delay": 0
		},
		{
			"id": "Navn",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "a.profile_name",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Alder",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "div.detail_property:nth-of-type(1) span.detail_value",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Land",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "span.country_property_value",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Estimert slektskap",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "span.possible_relationships_text",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "cM ",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": ".match_quality_value_inner span[data-automations]",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Delt %",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "span[data-automations='QualitySharedDnaPer']",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Segmenter",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": ".shared_segments span.match_quality_value",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Største",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": ".largest_segment span[data-automations]",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Tre",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "div.matched_family_tree_details",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "DNA_ny",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "span.tag_uppercased",
			"multiple": false,
			"regex": "",
			"delay": 0
		},
		{
			"id": "Tofr_ny",
			"type": "SelectorText",
			"parentSelectors": [
				"DNA treff"
			],
			"selector": "span.new_badge",
			"multiple": false,
			"regex": "",
			"delay": 0
		}
	]
}

_ID

Tekst i hermetegn blir navnet på navnet på scraperen (uthenteren) som også blir navnet på csv fila som lages og kan importeres i Excel. Navnet kan endres når man importerer definisjonsfila, eller med «edit metadata» NB Navnet må skrives i små bokstaver

Start URL

Har man flere kit kan man velge å ha en uthenting for hvert kit til hver sin fil, eller hente alle etterhverandre til en fil. Skal du hente flere må hver URL være omsluttet av hermetegn og adskilles med komma. Har du bare ett kit fjern komma og «URL2».

"startUrl":["URL1","URL2"]

For å finne din TOFR URL må du gå til dine DNA treff og velge filter (Tredetaljer): Har Theory of Family Realtivity, Deretter må du opp øverst i nettleser og kopiere URL. Punkt 3 i bilde under. (Jeg har flere kit på min profil så jeg kan i tillegg til å velge person, kan jeg velge hvilket av disse jeg skal se på. MH kaller disse for sett på norsk)

Litt om hva du kan eller bør legge til URL

Eks på URL:

https://www.myheritage.no/dna/matches/342579121?filter=theories_of_family_relativity&p=1

NB! Din URL kan ha færre eller flere bestandsdeler. Forklaring på oppbygging er under. Hvert punkt tar opp ulike deler og dens betydning:

  • Tall etter /matches/ – Er ditt nummer
  • ? – alt etter spørsmålstegnet er paramtre
  • & – standard skilletegn for parametre
  • # – spesialtegn (anker) som må være foran dna-kit-nummer
  • filter=theories_of_family_relativity – filter for å få frem teoriene
  • &p=1 – Paginering start side er 1. Opprinnelig vises 10 treff pr side. Om man skriver &p=[1-10] skal man i teorien hoppe frem stegvis 1 side av gangen tom side 10. (10×10 = 100 treff skal hentes ut)
  • &ps=25 – parameter for visninger pr side – betyr at det skal vises 25 treff av gangen.
  • #dnamatch-D-93E7DFD3-8F57-4190-xxxx….2-88D386A19998 – Har du flere kit pr person må hver kit spesifiseres spesifikt utover den «første» i sett listen.
Rediger "startUrl":["URL1","URL2"] til noe ala  "startUrl":["https://www.myheritage.no/dna/matches/342579121?filter=theories_of_family_relativity&ps=25&p=[1-3]"] Du kan ha flere TOFR url'er adskilt av komma
Når jeg testet dette fikk jeg først ikke til å hente ut alle om jeg valgte paginering, ei heller om jeg valgte å øke antall pr side som visningsparameter. Jeg fikk noen ganger bare noen få av alle mine kit. Ved å øke tidsparameter fra 2.000 ms til 20.000 ms under kjøring fikk til slutt med alt. Det kan hende at paginering hadde virket om jeg økte tiden til 10.000 ms (10 sek). Jeg brukte bare &ps=150 fordi jeg hadde på det meste 130 TOFR. Lek derfor litt med hva som passer for deg. 

Selectors

Alle elementer som opplegget består av er basert på ulke valgte elementer på html siden. For de teknisk interesserte er dette css basert. feks div.navn betyr velg innholdet mellom <div class=navn»>…</div>. Merknad: Dersom klassen har navn som har mellomrom i seg er det siste leddet som skal brukes fordi » div.navn tekst» betyr <div class=»navn»><tekst>…</tekst></div> og ikke <div class=»navn tekst»>.

Import SITEMAP (definisjonsfila)

Aktiver utvidelsen ved å trykke F12 (jeg har valgt å ha vise disse nederst på siden). Klikk på fane «Web scraper» som vis i bilde nedenfor. Står det ikke Web Scraper har du enten ikke installert tillegget for Chrome, eller så har du ikke aktivert denne.

Klikk på Create new Sitemap, Velg Import Sitemap

Scrape – Uthenting

Se bilde over for hvor du starter innhenting av data. Etter at menypunktet er trykt så kommer en særdeles viktig del. Du skal angi hvor lenge nettleser skal vente på data og hvor lenge nettsiden skal få lov til å bruke før neste side hentes. Jeg la til 0 bak slik at tiden økte fra 2 sekunder til 20. Bedre å vente noen ekstra sekunder enn å ikke få med seg data.

En nettleser åpnes seg og du kan følge med på at den åpner nettsidene og går videre. IKKE LUKK DENNE ved å X’e den ut. Den lukker seg selv når den er ferdig. For å se hva som ble hentet ut, trykker du på refresh knappen

For å lagre må man velge «export data as csv». Deretter kommer en lenke du må trykke på. CSV filen lastes ved å trykke på lenken «Download now»


Virket ikke? – Juster og prøv igjen

Ble det noen krøll? Test deg frem med å øke antall sekunder som scraper skal vente. Om du vil endre på noen av parameterene og prøve igjen kan dette gjøres ved å velge «edit metadata»

Selector Graph viser logikken på ulike steg den bruker for å hente frem data.

Selector Graph: Grafisk oversikt på opplegget

Excel

Norsk versjon dessverre ikke lese csv filer direkte fordi vi i Norge og USA bruker komma og semikolon ulikt. Den enkleste måte å hente inn CSV filer er å bruke en import funksjon i Excel for CSV filer som ligger under menypunkt Data. Under importen kan man velge å manipulere data / fjerne kolonner som du ikke trenger. Dette viser jeg ikke. Bruksanvisningen er for lang allerede

Lær mer fra Youtube

Vil du lære mer se på en av disse videoene

En kommentar om “Oppskrift for å hente ut dine teorier til Excel

  1. MH har oppdatert sine TOFR, jeg har lagt til muligheten til å få frem hvilke DNA treff som er nye, og hvilke teoerier som er nye. Første betyr at tester er nyankommet dna match.
    Følgende kode er lagt til definisjonsfila
    {
    «id»: «DNA_ny»,
    «type»: «SelectorText»,
    «parentSelectors»: [
    «DNA treff»
    ],
    «selector»: «span.tag_uppercased»,
    «multiple»: false,
    «regex»: «»,
    «delay»: 0
    },
    {
    «id»: «Tofr_ny»,
    «type»: «SelectorText»,
    «parentSelectors»: [
    «DNA treff»
    ],
    «selector»: «span.new_badge»,
    «multiple»: false,
    «regex»: «»,
    «delay»: 0
    }

    Liker

Legg igjen en kommentar

Please log in using one of these methods to post your comment:

WordPress.com-logo

Du kommenterer med bruk av din WordPress.com konto. Logg ut /  Endre )

Google-bilde

Du kommenterer med bruk av din Google konto. Logg ut /  Endre )

Twitter-bilde

Du kommenterer med bruk av din Twitter konto. Logg ut /  Endre )

Facebookbilde

Du kommenterer med bruk av din Facebook konto. Logg ut /  Endre )

Kobler til %s

Dette nettstedet bruker Akismet for å redusere spam. Lær hvordan dine kommentardata behandles..