Pobieranie konkretnej informacji z tabeli na innej stronie. |
Pobieranie konkretnej informacji z tabeli na innej stronie. |
7.02.2018, 01:55:53
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.11.2017 Ostrzeżenie: (0%) |
Witam!
Pobieram całą stronę: https://secure.tibia.com/community/?subtopic=killstatistics (np.server Amera ) do pliku tekstowego za pomocą curl, a chcałbym z tej tabeli co tam jest zapisać tylko np. dwie pozycje "Abyssador" i "An Observer Eye" z kolumny Race, a z kolumny Last Day - Killed by Players. Bym prosił o jakiś przykładowy kod jak to wyselekcjonować żeby nie zapisywało wszystkiego ze strony tylko te konkretne dwie rzeczy. Pozdrawiam. Ten post edytował omi 7.02.2018, 01:57:04 |
|
|
7.02.2018, 02:19:53
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Masz szczęście, bo w przypadku tej strony do treści po wysłaniu formularza z nazwą świata możesz też się dostać z metody GET: https://secure.tibia.com/community/?subtopi...amp;world=Amera
Dla Ciebie oznacza to tyle, że nie musisz się bawić w cURL czy inne biblioteki do wykonywania żądań HTTP. Wystarczy zwykłe:
Jak już masz w zmiennej kod HTML, to najlepiej analizować go parserem DOM, np. wbudowanym PHP DOM. To już wymaga trochę wprawy. |
|
|
7.02.2018, 03:13:35
Post
#3
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.11.2017 Ostrzeżenie: (0%) |
Dzięki za odpowiedź. Mam taki kod znalazłem z forum. Zapisuję on już nie całą stronę tylko niektóre elementy tabeli. A co by tu zmienić w tym kodzie żeby zapisać tylko np. dwie pozycje "Abyssador" i "An Observer Eye" z kolumny Race, a z kolumny Last Day - Killed by Players znajdującą się tam liczbę? Tak w ogóle to bym chciał to co wybiorę z tabeli zapisać do bazy danych w przyszłości, nie jestem do końca pewny czy dobrze kombinuje teraz czy to się tak da zapisać do bazy danych?
|
|
|
7.02.2018, 07:16:01
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
http://simplehtmldom.sourceforge.net/manual.htm
Kombinuj dalej. -------------------- |
|
|
7.02.2018, 08:50:34
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Więcej info na: http://kawalekkodu.pl/post/the-tag-is-out-...domxpath-s01e01 -------------------- |
|
|
7.02.2018, 15:54:53
Post
#6
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.11.2017 Ostrzeżenie: (0%) |
Dziękuję za odpowiedź. To zaczyna nabierać jakiś kształtów.
|
|
|
7.02.2018, 18:35:48
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
A odpowiadając na Twoją wątpliwość preg_match i preg_match_all też mogą być używane do wyłuskiwania danych z HTML-a, prawdziwe parsery DOM to jednak lepszy sposób. O ile wyrażenia regularne sprawdzą się w bardzo prostych przypadkach, tak już na przykład wybieranie komórki tabeli w czwartej kolumnie może okazać się mało intuicyjnym zadaniem dla wyrażenia regularnego, jeśli komórka nie została oznaczona jakimiś specyficznymi atrybutami. Co gorsza, nawet jeśli Twój wzorzec zostanie dopasowany, teoretycznie może on pasować do czegoś innego, bo akurat jakiś inny element też spełnia wymagania. Lepiej nauczyć się pracować z parserami DOM, bo od tego są.
|
|
|
7.02.2018, 22:24:39
Post
#8
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.11.2017 Ostrzeżenie: (0%) |
Jeszcze mam jeden dylemat bo przeszukiwałem internet i nic takiego nie mogę znaleźć. Wiem że trzeba dodać do tego kodu:
dane do połączenia z bazą : $url = 'adres bazy danych np: localhost'; $identyfikator = 'login'; $haslo = 'hasło'; $baza_danych="nazwa_bazy_danych"; $tabela="nazwa_tabeli" i nie wiem co dalej zmienić w kodzie żeby wynik nie był wyświetlany w przeglądarce tylko został zapisany do bazy danych w jednym wierszu w dwóch kolumnach, wynik 0 w jednej kolumnie wynik 1 w drugiej kolumnie tabeli. Przy okazji jak będę robił kolejny zapis do bazy danych żeby dało się skasować poprzedni zapis. Pozdrawiam |
|
|
7.02.2018, 23:15:13
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Coś słabo szukasz: http://php.net/manual/en/mysqli.prepare.php i użyj tego do wykonania zapytań INSERT i DELETE.
|
|
|
8.02.2018, 05:28:09
Post
#10
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.11.2017 Ostrzeżenie: (0%) |
Dzięki za odpowiedź. Popróbuję coś wykombinować tylko mówię od razu że nie skończyłem informatyki na politechnice i mogę nie ogarniać niektórych wątków i nie ogarniam. Coś spróbuję posklejać. To taki projekt hobbistyczny.
INSERT to powinien wyglądać mniej więcej tak ?:
I wtedy te pobrane dane można zapisać w jednym wierszu w dwóch kolumnach. Tak tu to widzę z przykładów. Czyli potrzebuje w kodzie mieć coś takiego jw. czy nie bardzo? A więc na razie mam taki kod:
I teraz nie wiem jak zmodyfikować ten kod i wstawić do niego INSERT i DELETE. Pozdrawiam Po chwili zastanowienia stwierdziłem ze ten kod wyżej nie zda mi egzaminu trzeba to zrobić tak jak pisał SmokAnalog za pomocą preg_match i preg_match_all. Czyli w bazie danych powinny być dwa wiersze w tym przypadku w których będą się znajdować dwa słowa "Abyssador" i "An Observer Eye" i przypisane w drugiej kolumnie do tych słów wartości. Ten post edytował omi 8.02.2018, 01:27:45 |
|
|
8.02.2018, 07:20:37
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
To czy użyć PHP DOM czy preg_match_all to tylko kwestia wyłuskania tych danych i lepiej to zrobić z PHP DOM. Co do tego jak zrobić zapytanie, przejrzyj ten link, który Ci wysłałem. Tam masz przykłady.
|
|
|
8.02.2018, 16:30:00
Post
#12
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.11.2017 Ostrzeżenie: (0%) |
Czy by mógł mi ktoś dokończyć ten kod i dodać do niego INSERT żebym mógł zobaczyć jak to się zapiszę w bazie danych. bo na razie ten kod wyświetla mi wynik w przeglądarce. Bym prosił. Pozdrawiam.
|
|
|
8.02.2018, 17:02:54
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Wygląda jakbyś całkowicie czekał na gotowca. Podstaw zapytanie insert zamiast echo i tyle.
-------------------- |
|
|
8.02.2018, 20:46:54
Post
#14
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.11.2017 Ostrzeżenie: (0%) |
Dzięki za odpowiedz.
Jak na razie dzięki należy się Wam flaszka Piccolo. |
|
|
Wersja Lo-Fi | Aktualny czas: 29.03.2024 - 01:48 |