Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 29/04/2023, à 06:31

krodelabestiole

Re : python requests : collecte de données du forum après connexion

sputnick a écrit :

Non cool

oui certes. mais je parle pas de curl ou autre wget, même si j'ai parlé de lynx. je me questionne juste sur l'utilité du truc dans le cadre de la pratique de Watael, qui m'a pas l'air très orthodoxe.. mais pourquoi pas

En ligne

#27 Le 29/04/2023, à 13:40

beuguissime

Re : python requests : collecte de données du forum après connexion

Salut,

Bon c'est rigolo deux minutes de tourner autour du pot mais pas sur 25 messages.

Watael, voici une solution:

#!/usr/bin/python3

import requests
import bs4

s = requests.session()
s.headers["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"

uname = "le_pseudo"
upass = "azerty1234567890"

data = {
    "form_sent": 1,
    "redirect_url": "",
    "req_username": uname,
    "req_password": upass,
}

r = s.post("https://forum.ubuntu-fr.org/login.php?action=in", data=data)

if "Vous êtes à présent identifié" in r.content.decode():
    print("Connected!")

r = s.get("https://forum.ubuntu-fr.org/search.php?action=show_new")

soup = bs4.BeautifulSoup(r.content, "lxml")
print("New messages:", len(soup.tbody.find_all("strong")))

Hors ligne

#28 Le 29/04/2023, à 14:14

Watael

Re : python requests : collecte de données du forum après connexion

merci, beuguissime. smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#29 Le 29/04/2023, à 14:47

hotnuma

Re : python requests : collecte de données du forum après connexion

krodelabestiole a écrit :

je parle pas de curl ou autre wget

Bein si justement. big_smile

J'ai essayé wget avec --load-cookies, --user --password, --user-agent, mais ya pô moyen, ça marche pô. tongue


Xubuntu / GitHub

Hors ligne

#30 Le 29/04/2023, à 14:56

sputnick

Re : python requests : collecte de données du forum après connexion

Avec requests et lxml via XPath:

Ajouter des règles de tests si besoin:

#!/usr/bin/env python

user = 'xxxxxxx'
password = 'xxxxxxxx'

import requests
from lxml import html

login_url = 'https://forum.ubuntu-fr.org/login.php'

session = requests.session()

response = session.get(login_url)

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0'
}

login_data = {
    'form_sent': 1,
    'redirect_url': 'https://forum.ubuntu-fr.org/index.php',
    'req_username': user,
    'req_password': password,
    'login': 'Identification'
}

response = session.post(login_url + '?action=in', data=login_data, headers=headers)

res = session.get(
    'https://forum.ubuntu-fr.org/search.php?action=show_new',
)

doc = html.fromstring(res.text)
nodes = doc.xpath('//table/tbody/tr/td[@class="tcl"]/div[@class="tclcon"]/div/strong/a')

for elt in nodes:
    url = 'https://forum.ubuntu-fr.org/' + elt.get('href')
    text = elt.text
    print(url, text)

Avec cURL et xidel:

#!/usr/bin/env bash

user='username'
password='password'

curl -s -L \
   'https://forum.ubuntu-fr.org/login.php?action=in' \
  -b ~/.cache/mycurl.cookiejar \
  -c ~/.cache/mycurl.cookiejar \
  -o /dev/null \
  -H 'Connection: keep-alive' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Origin: https://forum.ubuntu-fr.org' \
  -H 'Referer: https://forum.ubuntu-fr.org/login.php' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0' \
  -d form_sent=1 \
  -d req_username=$user \
  -d req_password=$password \
  -d redirect_url='' \
  -d login=Identification \

curl -s -L 'https://forum.ubuntu-fr.org/search.php?action=show_new' \
  -b ~/.cache/mycurl.cookiejar \
  -c ~/.cache/mycurl.cookiejar \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
  -H 'Connection: keep-alive' \
  -H 'Referer: https://forum.ubuntu-fr.org/index.php' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0' |
xidel -e '//table//tr/td[@class="tcl"]/div[@class="tclcon"]/div/strong//a/concat(@href, " ", text())'

Comme on écrit les cookies en local, la prochaine fois qu'on lance le script bash, on peut retirer la première requête cURL POST.

Cela dépends de la fréquence à laquelle on lance le script. Je conseille max toutes les 2 à 10 minutes.

Dernière modification par sputnick (Le 30/04/2023, à 18:22)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#31 Le 29/04/2023, à 16:19

Ayral

Re : python requests : collecte de données du forum après connexion

sputnick a écrit :

A tu analysé la requete dans Chrome Dev Tools?

C'est pas compliqué ^^

Modération : Cette façon de procéder pour distiller ton aide et la transformer en RTFM, ou en bon français une relation de dépendance et de donneur de leçon. Ce n'est l'esprit ni de ce forum, ni d'aucun autre. Tu es prié de changer de méthode, et si tu ne veux pas aider concrètement, à ne pas collaborer à ce fil. Merci.


Pour mettre les retours de commande entre deux balises code, les explications sont là : https://forum.ubuntu-fr.org/viewtopic.php?id=1614731
Blog d'un retraité
Site de graphisme du fiston Loïc
Ubuntu 22.04 LTS sur un Thinkpad W540

Hors ligne

#32 Le 29/04/2023, à 17:44

hotnuma

Re : python requests : collecte de données du forum après connexion

sputnick a écrit :

Avec cURL et xidel

Ah merci beaucoup, ça c'est très intéressant. tongue


Xubuntu / GitHub

Hors ligne

#33 Le 29/04/2023, à 19:33

sputnick

Re : python requests : collecte de données du forum après connexion

Ayral a écrit :
sputnick a écrit :

A tu analysé la requete dans Chrome Dev Tools?

C'est pas compliqué ^^

Modération : Cette façon de procéder pour distiller ton aide et la transformer en RTFM, ou en bon français une relation de dépendance et de donneur de leçon. Ce n'est l'esprit ni de ce forum, ni d'aucun autre. Tu es prié de changer de méthode, et si tu ne veux pas aider concrètement, à ne pas collaborer à ce fil. Merci.

Bien au contraire, j'essayais de faire apprendre à Watael à utiliser Chrome Dev tools, ce qui est la clef ici.

Le fait de lui donner le code tout fait ne l'aura pas fait progresser, il ne saura toujours pas se servir de CDT.

J'ai essayé de l'aider pas à pas sans lui donner la réponse toute faite.

C'est comme les devoirs à la maisons, si on doit les faire, c'est pour apprendre, pas pour que les autres les fassent à sa place.

Donc merci de ne pas voir le mal partout.

Dernière modification par Ayral (Le 29/04/2023, à 21:12)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#34 Le 29/04/2023, à 21:12

Ayral

Re : python requests : collecte de données du forum après connexion

Ici ce n,est pas une salle de cours. Et ici on ne donne pas des cours du soir à la maison, c'est un lieu d’entraide.
Je ne vois pas le mal, je vois une méthode qui n'est pas de l’entraide...


Pour mettre les retours de commande entre deux balises code, les explications sont là : https://forum.ubuntu-fr.org/viewtopic.php?id=1614731
Blog d'un retraité
Site de graphisme du fiston Loïc
Ubuntu 22.04 LTS sur un Thinkpad W540

Hors ligne

#35 Le 29/04/2023, à 21:18

sputnick

Re : python requests : collecte de données du forum après connexion

Aider Watael à maîtriser CDT est clairement une aide plus appropriée que donner la solution. Je ne suis pas d'accord. J'étais en train de le guider pas à pas. Si je ne voulait pas aider, je n'aurais pas participé.

En aucun cas mon message était RTFM. CDT est très puissant pour ceux qui se donnent la peine d’apprendre à s'en servir.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#36 Le 30/04/2023, à 17:28

Compte supprimé

Re : python requests : collecte de données du forum après connexion

Bonjour,
Un petit complément au code de @beguissime, qui pourrait aider:

soup = bs4.BeautifulSoup(r.content, "lxml")
for item in soup.find_all('strong'):
    link = item.find('a')
    if link:
        title = link.text
        url = link.get('href')
        print(title, url)

#37 Le 30/04/2023, à 18:00

sputnick

Re : python requests : collecte de données du forum après connexion

La version shell est corrigée, il y avait un petit bug sur les paramètres form data.

https://gist.github.com/sputnick-dev/3b … 77abf91239

J'ai aussi ajouté une requête XPath pour concaténer l'URL et le titre avec un espace entre.

wget -O forum-ubuntu-fr-scraper.sh https://gist.githubusercontent.com/sputnick-dev/3b36a1c8496c3366e7a20b77abf91239/raw/0d6bb301292415a16686641de0d0a45e429f1dc3/ubuntu-fr-scraper.sh
editor  forum-ubuntu-fr-scraper.sh

Version Python simplifiée: https://gist.github.com/sputnick-dev/88 … 105fddce98

wget -O forum-ubuntu-fr-scraper.py https://gist.githubusercontent.com/sputnick-dev/88771f580872a6a0fed780105fddce98/raw/4bbf4dd59e1064c5e7636100c8a15df432d22a38/gistfile1.txt
editor  forum-ubuntu-fr-scraper.py

Dernière modification par sputnick (Le 04/05/2023, à 00:18)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#38 Le 30/04/2023, à 18:40

Watael

Re : python requests : collecte de données du forum après connexion

Aider Watael à maîtriser CDT est clairement une aide plus appropriée que donner la solution.

il y a quand même une différence entre jeter le gamin à la baille (« il y a de l'eau, tu flottes*, apprend à nager. » (*au début)), et véritablement enseigner comment nager (en expliquant la respiration, les positions, les mouvements...).
roll


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#39 Le 30/04/2023, à 19:24

sputnick

Re : python requests : collecte de données du forum après connexion

Non, t'inquiète, je t'aurais pas laissé couler ^^


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#40 Le 03/05/2023, à 16:56

hotnuma

Re : python requests : collecte de données du forum après connexion

sputnick a écrit :

Version shell encore plus simple/courte:

Merci, c'est très intéressant ce type de commande dans la mesure ou on peut exécuter curl dans un programme écrit en C et rediriger la sortie standard ou même utiliser libcurl. Du coup c'est plus propre que du python tongue


Xubuntu / GitHub

Hors ligne

#41 Le 03/05/2023, à 19:05

geole

Re : python requests : collecte de données du forum après connexion

Bonjour
Est-ce le bon  endroit pour récupérer le paquet? https://www.videlibri.de/xidel.html#downloads ou https://sourceforge.net/projects/videli … velopment/  => https://sourceforge.net/projects/videli … b/download ?

Dernière modification par geole (Le 03/05/2023, à 19:10)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#42 Le 03/05/2023, à 19:12

sputnick

Re : python requests : collecte de données du forum après connexion

Oui, prends https://sourceforge.net/projects/videli … b/download

En 0.9.9.

Le premier lien est une version plus ancienne.

xidel est un super outil très polyvalent pour parser du HTML/XML/JSON avec des requêtes XPath, XQuery, template matching...

C'est un vrai couteau suisse.

Dernière modification par sputnick (Le 03/05/2023, à 19:15)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#43 Le 03/05/2023, à 19:20

geole

Re : python requests : collecte de données du forum après connexion

Je pense qu'il ne me reste plus qu'à attendre... Ce qui ne devrait pas être long.

 user='geole' password='x'
curl -s -L 'https://forum.ubuntu-fr.org/login.php?action=in'  -c ~/.cache/ubuntu-fr.cookiejar  -o /dev/null  -d form_sent=1  -d req_username=$user-d req_password=$password
curl -s -L 'https://forum.ubuntu-fr.org/search.php?action=show_new'  -b ~/.cache/ubuntu-fr.cookiejar |xidel -e '//table//tr//strong//a/join(("https://forum.ubuntu-fr.org/"||@href, text()))' 

Dernière modification par geole (Le 03/05/2023, à 19:50)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#44 Le 03/05/2023, à 19:27

sputnick

Re : python requests : collecte de données du forum après connexion

Oui, si tu remplace user-d par user, c'est immédiat quasi:

-d req_username=$user -d req_password=$password

Dernière modification par sputnick (Le 03/05/2023, à 19:28)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#45 Le 03/05/2023, à 19:39

geole

Re : python requests : collecte de données du forum après connexion

Merci de la relecture

a@b:~$ user='geole' password='x'
curl -s -L 'https://forum.ubuntu-fr.org/login.php?action=in'  -c ~/.cache/ubuntu-fr.cookiejar  -o /dev/null  -d form_sent=1  -d req_username=$user  -d req_password=$password
curl -s -L 'https://forum.ubuntu-fr.org/search.php?action=show_new'  -b ~/.cache/ubuntu-fr.cookiejar |xidel -e '//table//tr//strong//a/join(("https://forum.ubuntu-fr.org/"||@href, text()))'
https://forum.ubuntu-fr.org/viewtopic.php?id=2079076 problème  apres installation
https://forum.ubuntu-fr.org/viewtopic.php?id=2079009 python requests : collecte de données du forum après connexion
https://forum.ubuntu-fr.org/viewtopic.php?id=2079086 MAJ  Glabels
https://forum.ubuntu-fr.org/viewtopic.php?id=2079085 [résolu] 22.10->23.04 : erreur avec le paquet Linux-image-6.2.0-20
https://forum.ubuntu-fr.org/viewtopic.php?id=2078893 Raccourcis clavier pour écriture et Autokey
https://forum.ubuntu-fr.org/viewtopic.php?id=2078717 Erreur : mémoire épuisée
https://forum.ubuntu-fr.org/viewtopic.php?id=2079024 KDE parallèlement en néerlandais et français
https://forum.ubuntu-fr.org/viewtopic.php?id=2079018 casque audio
https://forum.ubuntu-fr.org/viewtopic.php?id=2079088 Impossible de faire tourner des jeux malgré une grosse config
https://forum.ubuntu-fr.org/viewtopic.php?id=2079094 restrictions d'accès ubuntu server
https://forum.ubuntu-fr.org/viewtopic.php?id=2079091 Lancement de Age of Wonders 3 : Absence du paquet libsslso.1.0.0
https://forum.ubuntu-fr.org/viewtopic.php?id=2079087 passage de azerty en qwerty
https://forum.ubuntu-fr.org/viewtopic.php?id=2079077 impossibilité de me connecter en SFTP à des hébergeurs
https://forum.ubuntu-fr.org/viewtopic.php?id=2079092 Imprimante Tout-en-un HP Smart Tank 7006e sera-t-elle installable sur
https://forum.ubuntu-fr.org/viewtopic.php?id=2079093 uploader HPLIP
a@b:~$ 

Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#46 Le 03/05/2023, à 20:02

sputnick

Re : python requests : collecte de données du forum après connexion

Pour aller plus loin, on peut marquer les messages comme lu, pour ne pas les réavoir à la prochaine requête:

#!/usr/bin/env sh

user=sputnick password='xxxxxxxxxxxxxxx'

trap 'rm -f /tmp/ubuntu-fr.html' EXIT

curl -s -L 'https://forum.ubuntu-fr.org/login.php?action=in' \
  -c ~/.cache/ubuntu-fr.cookiejar \
  -o /dev/null \
  -d form_sent=1 \
  -d req_username=$user \
  -d req_password=$password

curl -s -L 'https://forum.ubuntu-fr.org/search.php?action=show_new' \
  -b ~/.cache/ubuntu-fr.cookiejar > /tmp/ubuntu-fr.html

xidel -e '//table//tr/td//strong//a/join(
    ("https://forum.ubuntu-fr.org/"||@href, text())
)' /tmp/ubuntu-fr.html

flagAllRead="$(xidel -e '(//a[text()="Tout marquer comme lu"]/@href)[1]' /tmp/ubuntu-fr.html)"

curl -s -L "https://forum.ubuntu-fr.org/$flagAllRead"  \
  -c ~/.cache/ubuntu-fr.cookiejar \
  -b ~/.cache/ubuntu-fr.cookiejar \
  -o /dev/null

Ensuite, facile de parser/passer ça dans zenity ou yad si besoin wink

while read url text; do
    if zenity --question --text "$text"; then
         firefox "$url"
    fi 
done < <(./ubuntu-fr-scraper.sh)

Dernière modification par sputnick (Le 03/05/2023, à 20:03)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#47 Le 03/05/2023, à 21:49

beuguissime

Re : python requests : collecte de données du forum après connexion

Pour quelqu'un qui ne voulait pas faire la publicité d'une méthode de connexion auto, je te trouve, sputnick, soudain très bavard. wink
J'ai arrêté de compter les variantes que tu as postées ici, en plus de la publication du code sur ton gist.
Attention, je ne dis pas ça pour te rappeler à ton vœux de "discrétion" exprimé dans un de tes premiers messages ; bien au contraire, tes messages sont intéressants. Je suis simplement surpris de ce changement à 180°. big_smile

Dernière modification par beuguissime (Le 16/06/2023, à 12:37)

Hors ligne

#48 Le 03/05/2023, à 22:07

sputnick

Re : python requests : collecte de données du forum après connexion

beuguissime a écrit :

Pour quelqu'un qui ne voulait pas faire la publicité d'une méthode de connexion auto, je te trouve, sputnick, soudain très bavard. wink

J'ai émis des réserves, j’attendais qu'un admin se prononce. Dans la mesure ou quelqu'un a publié le code et n'a pas été censuré, j'ai donc retiré mes réserves puisque j'ai vu qu’apparemment, ça ne dérangeait personne.

Je rappelle aussi que je voulais que Watael (et d'autres) apprennent à utiliser Chrome Dev Tools .

beuguissime a écrit :

J'ai arrêté de compter les variantes que tu as postées ici, en plus de la publication du code sur ton gist.
Attention, je ne dis pas ça pour te rappeler à ton "discrétion" de silence exprimé dans un de tes premiers messages ; bien au contraire, tes messages sont intéressants. Je suis simplement surpris de ce changement à 180°. big_smile

Le virage est expliqué plus haut, pour ce qui est de la version, je pense que la dernière est la meilleure.

C'est un sujet que j'affectionne tout particulièrement. C'est ma spécialité le web scraping. CQFD.

Edit: gist 'updaté' https://gist.github.com/sputnick-dev/3b … 77abf91239

Et doublons effacés/MAJ.

wget -O ubuntu-fr-scraper.sh https://gist.githubusercontent.com/sputnick-dev/3b36a1c8496c3366e7a20b77abf91239/raw/0d6bb301292415a16686641de0d0a45e429f1dc3/ubuntu-fr-scraper.sh
editor ubuntu-fr-scraper.sh

Dernière modification par sputnick (Le 04/05/2023, à 00:21)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#49 Le 03/05/2023, à 22:53

alex2423

Re : python requests : collecte de données du forum après connexion

Discussion super intéressante. Je garde le sujet sous le coude en cas de besoin. smile

Hors ligne