Jak wygenerować linki z podanego przykładu

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ś???

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.

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.

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?

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)

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).

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.

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.

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

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

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

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.

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).

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

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