Hjælp til at trække links ud af hjemmeside

Her kan du få hjælp og stille spørgsmål til andre programmeringssprog!
Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53
Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 28. apr 2018, 11:58

Er der nogle der har forstand på Powershell og som kan hjælpe mig med at trække denne type links:

https://archiveofourown.org/works/13345065

ud af en liste med sider som dette:

https://archiveofourown.org/tags/Buffy% ... ?page=1363

Det skal bruges på andre fandoms end den også nogle med flere historier.

På forhånd mange tak.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 29. apr 2018, 12:57

Jeg forstår ikke helt hvad du vil bruge dette til, men det er rimelig lige til at trække links ud af en hjemmeside.
Note. Hvis du først skal logge ind på siden for at få de rigtige links så er dette muligt men kræver lidt mere.

Jeg vil ikke vælge at bruge Powershell til sådan en opgave, da det bare er for bøvlet.
Personligt vil jeg vælge at bruge Bash + AWK + wget eller Java.

F.eks.

Kode: Vælg alt

//Java
public class Main {

	public static void main(String[] args) throws IOException {
	
		String line;
		
		int start = 0;
			
		URL url = new URL("http://mnrb.dk");
		try(BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
			while ((line = reader.readLine()) != null) {		
				if(line.contains("<a href")) {
					start = (line.indexOf("href") +6);
					System.out.println(line.substring(start, line.indexOf("\"", start)));
				}
			}
		}
	}
}

Kode: Vælg alt

## Bash, AWK, Sed, wget (Linux)
wget -qO- "www.mnrb.dk"|grep -i "<a href"|sed "s/^[ \t]*//" |awk -F'["|"]' '{print $2}'
Det ikke perfekt men for 5 minutter virker det ganske godt.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 30. apr 2018, 22:07

Hjalp det dig?

Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 1. maj 2018, 07:20

Jeg bruger ikke linux.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 1. maj 2018, 13:06

Det første eksempel er Java, du kan lave en .jar fil og køre det på Mac, Windows eller en Linux variation.

Du kan også lave en Virutalbox VM og installere en lille Linux distro på 700mb, der er flere veje at gå.
Så kan du bruge nr to eksempel. Det virker måske også på Mac, hvem ved.

Du må komme lidt ind i kampen og give lidt feedback på de svar du får, ellers så springer andre måske over
dine næste forum tråde. Kun at skrive "jeg bruger ikke Linux" er ikke meget at gå efter eller særlig tilfredsstillende.

Hvis du har et problem som Linux kan løse, så brug det. Hvis du har noget andet der kan løse problemet så brug det.
Det handler om at bruge det bedste værktøj til rådighed.

Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 1. maj 2018, 13:34

Kan den jar fil laves så den også kan hente de links man skal være registrerede for at se?

Og kan du hjælpe mig med at lave jar-filen?

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 1. maj 2018, 13:39

Kan den jar fil laves så den også kan hente de links man skal være registrerede for at se?
Det kan man godt, men så skal jeg vide hvilken hjemmeside vi snakker om da det kræver at vi retter vores HTTP-Request og HTTP-response til.

Har du kendskab til Java selv? I forhold til fremtidig vedligeholdelse.
Hvorfor er det du gerne ville kopier alle linksne? Lidt mere info om formål.
Har du anden erfaring indenfor programmering?

Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 1. maj 2018, 13:45

Linket til hjemmesiden er i min første post og det samme er et eksempel-link.

Jeg kender ikke ret meget til java, men jeg regner ikke med at skulle blive ved med at bruge det når jeg har trukket alle de links ud jeg skal bruge.

Jeg skal bruge links'ne til et andet program.

Angående erfaring indenfor programmering er den ikke eksisterende men jeg kan godt følge en guide så længe den er udførlig.


Jeg har et par andre sites også som skal have samme behandling, men foretrækker at starte der.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 1. maj 2018, 14:31

Hvis du bruger kommandoen i eksempel nr 2 som følger

Kode: Vælg alt

wget -qO- "https://archiveofourown.org/tags/Buffy%20the%20Vampire%20Slayer%20(TV)/works?page=1306"|grep -i "<a href"|sed "s/^[ \t]*//" |awk -F'["|"]' '{print $2}'
Så får du 118 links som (eksempler)
/tags/Buffy%20the%20Vampire%20Slayer%20(TV)/bookmarks
/works/752884
/series/41923
http://www.hexwood.com/archive/drama/onthe2.html
/support
Samt en masse andet, er det sådan noget du leder efter?

Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 1. maj 2018, 14:37

Det er kun denne type links jeg er interesseret i:

/works/752884

men tallene varierer fra historie til historie da det er id'et for en specifik historie.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 1. maj 2018, 15:47

Med dette link som eksempel https://archiveofourown.org/tags/Buffy% ... ?page=1306 så ser det således ud

Kode: Vælg alt

//Java
public class Main {

	public static void main(String[] args) throws IOException {
	
		String line;
		
		int start = 0;
		
		String pattern = "/works/.*\\d$";
		Pattern r = Pattern.compile(pattern);
			
		URL url = new URL("https://archiveofourown.org/tags/Buffy%20the%20Vampire%20Slayer%20(TV)/works?page=1306");
		try(BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
			while ((line = reader.readLine()) != null) {		
				if(line.contains("<a href") && line.contains("/works/")) {		
					start = (line.indexOf("href") +6);
					String x = line.substring(start, line.indexOf("\"", start));
					if(r.matcher(x).find()) {
						System.out.println(x);
					}
				}
			}
		}
	}
}

Kode: Vælg alt

## Bash, AWK, Sed, wget (Linux)
wget -qO- "https://archiveofourown.org/tags/Buffy%20the%20Vampire%20Slayer%20(TV)/works?page=1306"|grep -i "<a href"|sed "s/^[ \t]*//" |awk -F'["|"]' '{print $2}'|grep -i "/works/[0-9].*"
/works/752852
/works/752884
/works/752878
/works/752842
/works/752831
/works/10544138
/works/1944888
/works/1945113
/works/46590
/works/123873
/works/46587
/works/46579
/works/77132
/works/10210868
/works/46476
/works/11137773
/works/11133327
/works/11133267
/works/11133354
/works/46468

Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 1. maj 2018, 15:53

Jeg går ud fra at hele linket bliver inklusiv: https://archiveofourown.org/ ellers kan jeg ikke bruge det.

Kan jeg lave en liste med websites og så kører det på mere end en side per batch?

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 1. maj 2018, 16:04

Du skal bruge hele URL'en / linket som jeg skrev f.eks.
https://archiveofourown.org/tags/Buffy% ... ?page=1306

Tænker du flere undersider på archiveofourown.org? Som f.eks.
https://archiveofourown.org/tags/Buffy% ... s?page=190
https://archiveofourown.org/tags/Buffy% ... s?page=312
https://archiveofourown.org/tags/Buffy% ... s?page=316

Og trække alle /works/ linksne ud fra de sider? Eller tænker du helt forskellige hjemmesider på forskellige domæner?

Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 1. maj 2018, 16:06

Flere sider fra samme domæne og alle links der kun indeholder /works/forskellige number

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 1. maj 2018, 16:17

Tanjamuse skrev:Flere sider fra samme domæne og alle links der kun indeholder /works/forskellige number

Kode: Vælg alt

//Java
public class Main {

	public static void main(String[] args) throws IOException, InterruptedException {
	
		String line;
		
		int start = 0;
		
		ArrayList<URL> urls = new ArrayList<URL>();
		urls.add(new URL("https://archiveofourown.org/tags/Buffy%20the%20Vampire%20Slayer%20(TV)/works?page=1306"));
		urls.add(new URL("https://archiveofourown.org/tags/Buffy%20the%20Vampire%20Slayer%20(TV)/works?page=141"));
		
		String pattern = "/works/.*\\d$";
		Pattern r = Pattern.compile(pattern);
		
		for(URL url : urls) {
			System.out.println("Checking urls for: " + url.toString());
			try(BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
				while ((line = reader.readLine()) != null) {		
					if(line.contains("<a href") && line.contains("/works/")) {		
						start = (line.indexOf("href") +6);
						
						String x = line.substring(start, line.indexOf("\"", start));
						
						if(r.matcher(x).find()) {
							System.out.println(x);
						}
					}
				}
			}
			Thread.sleep(3000);
		}
	}
}

Kode: Vælg alt

## Bash, AWK, Sed, wget (Linux)
for line in `cat /tmp/archiveofourown.org`:do wget -qO- ${line}|grep -i "<a href"|sed "s/^[ \t]*//" |awk -F'["|"]' '{print $2}'|grep -i "/works/[0-9].*":sleep 3:done;
For Java skal du tiljøje en plads i dens array med den URL du vil finde links fra f.eks.

Kode: Vælg alt

urls.add(new URL("https://archiveofourown.org/tags/Buffy%20the%20Vampire%20Slayer%20(TV)/works?page=1306"));
For Linux skal du skrive de URL's ind i en fil i /tmp/archiveofourown.org separaret af en ny linje for hver URL.

Tanjamuse
Begynder
Indlæg:9
Tilmeldt:28. apr 2018, 11:53

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af Tanjamuse » 1. maj 2018, 16:40

Du er nødt til at skrive mig en guide til hvordan jeg bruger det, hvis du gider?

Jeg forstår godt at det skal være en jar men jeg er ikke sikker på hvordan det hele hænger sammen.

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Hjælp til at trække links ud af hjemmeside

Indlæg af cristian » 1. maj 2018, 17:10

Tanjamuse skrev:Du er nødt til at skrive mig en guide til hvordan jeg bruger det, hvis du gider?
Jeg forstår godt at det skal være en jar men jeg er ikke sikker på hvordan det hele hænger sammen.
Der er ikke rigtig så meget at skrive en guide om, jeg forstår godt at dette kommer an på erfaring men
hvis du ikke kan bruge overstående så skal der nok laves en simple GUI som du kan bruge til Java koden.

Men dette går udover hvad jeg her og nu har lyst til at bruge tid på uden at tage en times løn for også at tilføje en GUI, da de viste løsninger er simple, virker men er lidt tekniske.

Dette var en sjov lille opgave at løse, så enten er det overstående eller også er der måske nogle andre herinde der kan lide at rode med f.eks. AWT som kan smække en GUI på :D Men prøv at bruge 5 minutter på det og se om du ikke kan sno den.

Du kan f.eks. Se her hvordan du kan lave en .jar fil
http://help.eclipse.org/kepler/index.js ... sks-33.htm
https://www.youtube.com/watch?v=mE3rbtKm-pk

Det kunne også være sjovt hvis nogle andre kom med et .PHP alternativ.

Besvar