Jak wygenerować linki z podanego przykładu


(Djzon) #1

Jak wygenerować linki z podanego przykładu

http://nazwastrony.com/nazwa*_*

gwiazdki oznaczają liczby 8 cyfr (wszystkie możliwe kombinacje). - pomiędzy nimi jest "miękka spacja"

Wiem, że będzie tego bardzo dużo lecz się tym nie zrażam.

Najlepiej jak by się dało podzielić każde 10000 linków w pliku tekstowym.

Pomoże ktoś???


(Tomek Matz) #2

Od razu mówię, że za Ciebie tego nie zrobię :slight_smile: Mam tylko kilka pytań:

  1. Do czego Ci ten program?

  2. Czy te 8-cyfrowe liczby obejmują też np. 00 000 001, 00 000 002, itd., czy też liczenie zaczyna się od 10 000 000 ? Inaczej rzecz ujmując ... wszystkich liczb jest 90 mln (od 10 000 000 do 99 999 999) czy też 100 mln (od 00 000 001 do 99 999 999)?

  3. Czy liczby mogą występować w mieszanej kombinacji, np. 10 000 000 [spacja] 33 333 333, czy też jeśli po jednej stronie spacji jest 10 000 000, to po drugiej stronie spacji też musi być 10 000 000 ?

W sytuacji, gdy interesuje Cię pierwszy przypadek, to ilość kombinacji jest astronomiczna. Zakładając, że interesuje Cię tylko 90 mln (zamiast 100 mln) liczb to będzie to 90 mln x 90 mln, czyli 81 x 10^14 możliwych kombinacji.


(somekind) #3

I będziesz miał bilion plików, które zajmą 4,5 EB?

@matzu - z tego co pamiętam, to to nie są kombinacje tylko wariacje z powtórzeniami.


(Tomek Matz) #4

Ta liczba to jakaś ironia, której nie łapię, czy o co chodzi? Skąd wiesz jak długi jest URL?

Czyli Twoim zdaniem pomyliłem się w obliczeniach? Gdzie jest błąd?


(Djzon) #5

Nie chce programu pisać tylko chcę wiedzieć jakim sposobem można to zrobić? może wiersz polecenia?

Ok. Zmniejsze liczbę...

http://nazwastrony.com/nazwa*_0

w miejsce gwiazdki liczba od 100000000 do 90000000 (bez kombinacji liczb)


(Tomek Matz) #6

Tzn. się musisz napisać program. Samo się przecież nie zrobi :stuck_out_tongue: Może to być aplikacja konsolowa (czyli taka uruchamiana z wiersza poleceń).

Jeśli będziesz miał od 10 000 000 do 90 000 000 liczb bez kombinacji, to w sumie powstanie Ci 80 000 001 linków, które w jednym pliku zajmą 3,73 GB (zakładając, że URL będzie miał w sumie 50 znaków).


(kamil_w) #7

W programie tworzysz zmienną i, której nadajesz wartość początkową. Następnie tworzysz pętlę, która wykona inkrementację x razy lub taką, która będzie powtarzać czynność, aż zmienna i osiągnie wymaganą wartość. A brakujące zera można dorobić na szybko w notepad++ używając opcji nagrywania czynności.

Tak chyba będzie najprościej.


(somekind) #8

Myślę, że tyle zagnieżdżonych pętli, ile jest cyfr, a w ostatniej sklejenie wszystkich iteratorów w string i dodanie do tablicy, która co jakiś czas jest zapisywana do pliku i opróżniana.


(Djzon) #9

Nie jestem programistą ale pewnie moderator i tak by skierował na ten dział...(?)


(Grzelix) #10

Najprościej to widzę tak:

plik batch

@echo off


set name=result.txt 

FOR /L %%G IN (1000000,1,90000000) DO echo http://nazwastrony.com/nazwa%%G_0 >> %name%

choć jak już wcześniej wspominano będzie to ogromny plik


(Djzon) #11

Ile to może trwać czasu? Jeśli rozpoczne teraz działanie to zdąrze do 1 w nocy heh?


(somekind) #12

Najbardziej spowalnia zapis każdej linijki na dysk oddzielnie. Lepiej zapisywać całe paczki po kilkadziesiąt tysięcy wpisów.

Po co Ci w ogóle taki plik? Może jest inne rozwiązanie Twojego problemu.


(Tomek Matz) #13

A przeprowadzałeś jakieś testy? Moim zdaniem najbardziej spowalnia ciągłe otwieranie i zamykanie pliku (choć to strzał, bo trzeba by napisać kilka wersji aplikacji, żeby mieć pewność). Gdybym ja to robił to miałbym uchwyt do otwartego pliku i zapisywanie wykonywał na bieżąco (linijka po linijce).


(Drobok) #14

Odpowiedz na pierwsze pytanie tego tematu, bo wg mnie takie coś jest bez sensu :slight_smile:


(Djzon) #15

Znalazłem inny sposób rozwiązania swojego problemu. Teraz wyszukam same"prawidłowe" linki na stronie....Coś na zasadzie Link Site Explorer