Przeglądanie stron www przy pomocy pythona.

0

Witam, mam parę pytań do was w tym temacie, postaram się zwięźle zadać pytania w punktach pod spodem, za odpowiedzi będę wdzięczny :)

1.Wiem jak wyświetlić przy pomocy pythona stronę internetową ale to wyświetla kod html. A w jaki sposób wyświetlać stronę w taki sposób żeby to był już sformatowany jakoś tekst do czytania ? Chodzi o taki sposób żeby wygodnie było przeglądać strony.
2.Jeśli przeglądam internet z użyciem tor'a w pythonie to jest to sposób jakoś mniej bezpieczny, zostawiający więcej śladów niż ta standardowa przeglądarka tor'a ?
3.Czytałem na stronie Richarda Stallmana(nie wiem czy dobrze zrozumialem, w razie czego prosze mnie sprostowac), ze przeglada internet w taki mniej wiecej sposob: wysyla jakies zapytania e-mail do strony, i dostaje tresc adresu url tez na maila i wtedy czyta... - I tu moje pytanie czy moge przy pomocy pythona zrobic cos takiego ? Oraz jesli moge to czy da sie do tego jakoś dołączyć tor'a ?

0

Według mnie, to co chcesz osiągnąć, możesz za pomocą poniższych libów pythonowych:

http://docs.python-requests.org/en/master/ (pobierze Ci stronę jako html, nagłówki czy co tam potrzebujesz)
https://html.python-requests.org ("zrenderuje" Ci html do tekstu "jako-tako")

Choć z drugiej strony, jak już jesteś w terminalu, to nie wiem po co sobie życie komplikować, masz do tego dedykowany i znakomity browser: elinks, możesz to łączyć do/z innymi skryptami, w tym z pythonem: https://github.com/pexpect/pexpect
Był jeszcze links z obsługą JS i obrazków graficznych w terminalu (za pomocą framebuffera), ale nie wiem czy jest dalej rozwijany, generalnie do prostych stron dawał radę.

1
  1. Ściągasz źródło
  2. Zapisujesz lokalnie do pliku
  3. Otwierasz ten plik w przeglądarce

Ale to i tak nie zadziała ze stylami i skryptami które strona ładuje z relatywnych URLi, bo musiałbyś je wszystkie pobrać robiąc jakieś deep copy.

0

No okej, w miarę wszystko czaje.Jeszcze takie dwa pytania mam.
1.Więc tą przeglądarkę elinks mogę zgrać ze skryptami pythona i z torem tak ? Jakiś link jak to można zrobić ?
2.A co z pobieraniem stron poprzez wysłanie mailowego zapytania i otrzymania strony na adres email ? To znaczy nie wiem czy dobrze zrozumialem autora, nizej cytat gdzie autor opisuje jak w ten sposob przegląda strony internetowe, jesli wiecie o co chodzi i jak zrobic to przy pomocy pythona proszę o wskazówki.
cytat:

I generally do not connect to web sites from my own machine, aside from a few sites I have some special relationship with. I usually fetch web pages from other sites by sending > mail to a program (see https://git.savannah.gnu.org/git/womb/hacks.git) that fetches them, much like wget, and then mails them back to me. Then I look at them using a web > browser, unless it is easy to see the text in the HTML page directly. I usually try lynx first, then a graphical browser if the page needs it (using konqueror, which won't fetch from
other sites in such a situation).

0
import sys



from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *


app = QApplication(sys.argv)
app.setAttribute(Qt.AA_UseSoftwareOpenGL,True)




qm= QMainWindow ();
qm.resize(500,500)

push = QPushButton(qm);


wv = QWebEngineView(qm)
wv.load(QUrl('https://4programmers.net/Forum/Python/311307-przegladanie_stron_www_przy_pomocy_pythona?p=1494422#id1494422'))
wv.setGeometry(QRect(100,100, 600, 600))
#wv.show();


qm.show();


app.exec_()

Oraz wstawiania własnego tekstu

wv.page().setHtml("To jest <b>Mój</b> kod")
0

odniosę się do pytania w komentarzu do mojego posta

Dwa pytanka: 1.Widzę Qt tam używasz, a jest możliwa jakaś konsolowa alternatywa dla tego ? ; 2.O co chodzi z tym wstawianiem własnego tekstu ? Na cudzą stronę wstawić swój własny tekst/kod ? O co chodzi

  1. kontrolkę QWebEngineView można osadzić na formularzu aplikacji i mieć np. wyjątkowo ładny raport księgowy w HTML CSS i animacjami w JS :) :),

  2. Koleżanki z biura w którym pracuję spędzają z 30 min albo i więcej dzienni na odświeżaniu ogłoszeń firmowych na parunastu/kilkudziesięciu darmowych/tanich portalach ogłoszeniowych. pisze automat który będzie logował się i klikał za Nie :)

Jeśli chodzi o kod powinien zadziałać na konsoli.... ale nie sprawdzałem, i mam tylko taką nadzieje

0

Kilka tematów połączonych, ale postaram się podzielić swoją odpowiedź logicznie na części.

Ad: 1. Tak jak ktoś już wyżej pisał - istnieją przeglądarki tekstowe działające w terminalu (lynx, links, links2, elinks, w3m) czy np. w emacs (w3m). Jeśli jednak chodzi o samo "przeglądanie stron w python" to musisz powtórzyć proces wywołania strony (request http) do serwera. Czyli możesz użyć urlllib, lub requests (ewentualnie np. grequests jeśli chcesz wiele stron asynchronicznie). Rezultatem wywołania HTTP będzie odpowiedź serwera, zawierająca m. in. status i content. Zakładając, że wywołanie nie miało błędów (status 2xx) otrzymasz to co serwer zwraca (czyli response). Odpowiedź ta będzie zawierała nagłówki HTTP (wśród nich m.in. content-length czy content-type + charset) oraz samą treść strony (html). Zakładając, że chcesz się pozbyć tagów html - możesz użyć BeautifulSoup lub podobnego parsera (coś a'a lxml, xpath, etc.). Taka biblioteka jest przeważnie potrzebna dlatego, że wiele stron nie jest poprawna składniowo, więc parser działający "strict" po prostu zgłosi błąd (porównaj z DTD). Zakładając użycie bibliotek (np. request) w wielu przypadkach otrzymasz poprawnie zakodowany text, natomiast może się zdarzyć, że twoja strona źródłowa będzie np. chińska, węgierska, lub mieszana (np. zażółć gęślą jaźń لوحة المفاتيح العربية ‎) i będziesz musiał odpowiednio zdekodować ten tekst. Tutaj dochodzimy do nagłówków (content-type -> charset) i tego typu rzeczy. Tutaj pomocne mogą być takie wynalazki jak np. moduł chardet.

Ad 2. "Jeśli przeglądam internet z użyciem tor'a w pythonie to jest to sposób jakoś mniej bezpieczny, zostawiający więcej śladów niż ta standardowa przeglądarka tor'a ?"

Prawdopodobnie tak. A przynajmniej będzie to wprost proporcjonalne do twojej świadomości tego scenariusza. Zakładam, że mając na myśli "tor" mówimy tu o jakimś konkretnie wydzielonym środowisku (np. vm z kontrolowanym przez ciebie serwerem dns). Oczywiście zostają kwestie "odcisku" twojej "przeglądarki", czyli pythona, który wysyła takie czy inne nagłówki (user-agent, accept, itd.). Dodatkową kwestią jest np. obsługa przekierowań (zakładając, że automatycznie obsługujesz kody 3xx (follow redirects)). Przeglądarki przygotowany do sieci tor są zabezpieczone przez wieloma ze sposobów deanonimizacji tora (nawet z wewnątrz vm) - requestów STUN, webrtc, itd.
Zakładając "gołego pythona" raczej cię to wszystko nie dotyczy, choć może zależeć od użytych bibliotek.
Możliwości jest wiele, natomiast to, że nie masz obsługi czcionek/pluginów/nie raportujesz wielkości viewport, będą świadczyć o unikalności twoich requestów. Zatem czy jest to sposób "jakoś mniej bezpieczny" - prawdopodobnie tak, ale to zależy jakiego poziomu bezpieczeństwa oczekujesz.

Ad. 3. "Czytałem na stronie Richarda Stallmana..."

Nie do końca to rozumiem, natomiast protokół HTTP nie ma nic wspólnego z emailem (w omawiany przypadku SMTP), oprócz tekstowego formatu komunikacji.
No i jeśli chodzi o Richarda Stallmana, to miej na uwadze, że używa on komputera z wolnym biosem, większość czasu spędza w trybie tekstowym, jego systemem operacyjnym jest pewnie Guix, no i w wywiadach można przyuważyć, że musi czasem przerwać komunikację video ponieważ jego komputer się przegrzewa wtedy (pomimo wentylatora pokojowego skierowanego wprost na ekran /co powoduje szumy kamery/ - prponuję np. oglądnąć wywiad na yt na kanale Briana Lunduke'a).
Richard Stallman to światły człowiek, natomiast nie do końca rozumiem - czy ty zmierzasz do konfiguracji swojego środowiska w podobny sposób? W takim razie zacząłbym od zainstalowania emacs (polecam) i solidnego kursu LISP (z perspektywy emacs oraz guix).

0

@bdwn
Ja też używam komputera z wolnym biosem, jedynym programem graficznym jaki używam jest przeglądarka także też praktycznie cały czas spędzam w trybie tekstowym, a jeśli chodzi o emacsa to tak... Kiedyś używałem go praktycznie do wszystkiego w systemie, po prostu odpalałem system, emacsa i tam wszystko robiłem także temat znam bardzo dobrze bo używałem go tak jak mówię wręcz do wszystkiego i miałem go skonfigurowanego w dość zaawansowany sposób, obecnie próbuję innej konfiguracji systemu - mianowicie zamiast emacsa używam vima, i tak jak wcześniej konsole, irc, i prawie wszystko co używałem w systemie miałem w emacsu to teraż używam po prostu programów tekstowych/terminalowych a cały system konfiguruję z terminala urxvt + tmux i też jest okej, właściwie to nie ma takiej różnicy jak teraz patrzę między tamtym i tym ustawieniem systemu... tak jak kiedyś po prostu po zalogowaniu się w tty odpalałem X'y a w xinitrc miałem od razu komendy które odpalały mi tiling wm(ratpoison) a w nim od razu tmux+urxvt na pelny ekran a w tym emacsa i wszystko tam robiłem, a obecnie robię właściwie podobnie logowanie > X'y > xinitrc odpala mi tmux+urxvt tylko z tą różnicą że nie odpala mi w terminalu emacsa tylko bezpośrednio w terminalu już wszystko robie zamiast w emacsu(troche lepiej tylko terminal skonfigurowalem i dodałem skroty klawiszowe z vima a do edycji samego terminala tmux ma vi-mode i super edytuje sie nim konsole) a do edycji tekstu vim i powiem że nie ma wielkiej różnicy, po prostu wtedy siedziałem właściwie w jednym oknie tmux'a bo wszystko zalatwialem w emacsu a teraz odpalam kilka okien tmuxa na rozne programy terminalowe ktore wczesniej miescily mi sie w emacsu, i tamta konfiguracja i ta mi przypada do gustu :) Od dawna używam systemu w trybie tekstowym, zmienilem tylko emacsa na vima - swoja droga to ta cala wojna emacs vs vim chyba nie jest tak warta swieczki bo obydwa programy sa swietne i duzo mi w pracy na komputerze sie nie zmienilo. Ja używam systemu operacyjnego Parabola ale jeśli chodzi o Guix SD to śledze jego rozwój i jak będę miał chwilkę to nie omieszkam też się nim pobawić, ogolnie interesuje sie roznymi dystrybucjami unixowymi, i linuxowymi i tymi bsd, tylko na razie nie mam ani czasu ani weny ich testowac ale jak tylko bede mial czas to nieomieszkam, mam kilka systemow w planach a guix jest na jednym z pierwszych miejsc :) Jesli chodzi o lispa to chcialbym sie pouczyc guile, nie chodzi tylko o system operacyjny, przeciez co za sens uczyc sie jezyka programowania tylko pod jeden system operacyjny ;p Ale ogolnie Guile wyglada ciekawie, tylko ze aktualnie chce sie uczyc pythona, gdzies juz na tym forum poruszylem ten temat, czy powinienem uczyc sie pythona czy wlasnie guile, do emacsa moze wroce - nie wiem, i z emacsem i vimem mi dobrze takze ciezki wybor, emacsa sie rozszerze dzieki Elispowi, z kolei vima mozna rozszerzyc pythonem, i sam nie wiem czy uczyc sie teraz guile czy pythona, to znaczy chcialbym poznac obydwa tylko nie wiem od ktorego zaczac troche... Bo tak samo nie wiem czy teraz nie bede chcial zaglebic sie troche w nauke gentoo lub jakiegos bsd zamiast guixa, sam nie wiem, tyle dobroci do wyboru ;p

0

Ja też używam komputera z wolnym biosem,

Zaciekawiło mnie to. Jakiego sprzętu używasz konkretnie oraz jaki to bios? Libreboot? Jak wyglądał proces flashowania biosu, i jeśli to w miarę współczesny procesor Intel to czy nie było problemów z management engine, etc?
Ogólnie ciekawe jest to co piszesz. Masz jakiś konkretny poziom jak bardzo "libre" ma być twoja konfiguracja? Konkretne licencje?

0

uzywam laptopa lenovo x60, procesor Intel Core 2 T5600 1.833ghz, tak uzywam libreboota, opis flashowania masz na stronie libreboot.org. Nie bylo z niczym problemow bo to nie jest w miare wspolczesny procesor, ale mi w pelni wystarcza, wlasciwie to mala jego czesc uzywam, bo w trybie tekstowym to wiesz, do kompilowania glownie sie uzywa albo jak chce w cos zagrac ale gram glownie w gry tekstowe takze luz. A jesli chodzi o libre to oczywiscie nie uzywam zadnego nie-wolnego programu, same programy z dostepnym(nie zaciemnionym) kodem zrodlowym na wolnej licencji, czyli na takiej ktora zatwierdza fundacja wolnego oprogramowania. A jakie licencje zatwierdza mozesz sprawdzic na fsf.org. A nawet jesli chcialbym uzyc jakiegos systemu ktory nie jest w cudzyslow "FSF-approved" np gentoo, to jesli utrzymam w nim wylacznie wolne oprogramowanie i wymienie linux na linux-libre to wtedy jest dla mnie ok. Dodatkowo o licencje nie musze sie martwic jesli uzywam wolnej dystrybucji linuxa zatwierdzonej przez FSF to zespol dystrybucji sprawdza licencje a dodatkowo posiadam pakiet "your-freedom" ktory sprawdza takie rzeczy przy instalacji oprogramowania.

1

Dzięki za odpowiedź. Interesował mnie właśnie poziom "libre" jaki chcesz osiągnąć, bo rzadko spotykam osoby na tyle zdeterminowane.

pakiet "your-freedom" ktory sprawdza takie rzeczy

Your freedom, your choice.

1 użytkowników online, w tym zalogowanych: 0, gości: 1