[PYTHON] Wagen Sie es, das Formular ohne Selen auszufüllen

Einführung

Es ist nicht so sehr "wagen", aber wenn ich die Formularbearbeitung mit Python untersuche, erscheint häufig Selen, also habe ich es mit Requests + Beautiful Soup implementiert.

Zuvor veröffentlichter Artikel ist als Entwicklung genau richtig, daher habe ich den Profiltext von Qiita bearbeitet.

Bearbeitungsfunktion

Es wurde festgestellt, dass viele bearbeitbare Elemente aus der Quelle den Typ ['Text', 'URL', 'Kontrollkästchen'] haben, sodass ich sie mit geringem Aufwand abrufen konnte. Wenn Sie "Benutzer [Beschreibung]]" hinzufügen, was eine Erfassungsauslassung ist, und diese dann bearbeiten, werden die Post-Daten vervollständigt. Aus irgendeinem Grund war das Kontrollkästchen zum Veröffentlichen von E-Mails standardmäßig aktiviert, daher behebe ich es auf 0. Sobald Sie die Daten erstellt haben, veröffentlichen Sie sie über die Anmeldesitzung und Sie sind fertig.

def edit_profile(session):
    profile_page_data = get_page_data(session, profile_url)
    bs_profile_page = BeautifulSoup(profile_page_data.text, 'html.parser')
    authenticity_token = str(bs_profile_page.find(attrs={'name':'authenticity_token'}).get('value'))
    post_data = {
        'utf-8':'✓',
        '_method': 'put',
        'authenticity_token':authenticity_token
    }
    response = bs_profile_page.find_all(attrs={'type':['text', 'url', 'checkbox']})
    for i in response:
        value = i.get('value')
        post_data[i.get('name')] = value
    post_data['user[public_email]'] = 0 #1 standardmäßig aus irgendeinem Grund
    post_data['user[description]'] = 'Ich habe es bearbeitet! !! !! !!'
    print(post_data)
    response = session.post(profile_url, post_data)
    print(response)

Ausführen

Fügen Sie edit_profile () zu dem zuletzt erstellten Programm hinzu, um das Programm abzuschließen.

import requests
import os
from bs4 import BeautifulSoup
import json


user_name = 'user_name'
user_password = 'user_password'
login_url = 'https://qiita.com/login'
profile_url = 'https://qiita.com/settings/profile'
    

def get_authenticity_token(session, login_url):
    page_data = get_page_data(session, login_url)
    bs_page_data = BeautifulSoup(page_data.text, 'html.parser')
    authenticity_token = str(bs_login_page.find(attrs={'name':'authenticity_token'}).get('value'))
    return bs_page_data, authenticity_token


def get_page_data(session, url):
    response = session.get(url)
    response.encoding = response.apparent_encoding
    return response


def login(session):
    login_form = {
        'utf-8':'✓',
        'authenticity_token':'token',
        'identity':user_name,
        'password':user_password
    }
    bs_login_page, authenticity_token = get_authenticity_token(session, login_url)
    login_form['authenticity_token'] = authenticity_token
    session.post(login_url, login_form)
    

def edit_profile(session):
    bs_profile_page, authenticity_token = get_authenticity_token(session, profile_url)
    post_data = {
        'utf-8':'✓',
        '_method': 'put',
        'authenticity_token':authenticity_token
    }
    response = bs_profile_page.find_all(attrs={'type':['text', 'url', 'checkbox', 'textarea']})
    for i in response:
        value = i.get('value')
        post_data[i.get('name')] = value
    post_data['user[public_email]'] = 0 #1 standardmäßig aus irgendeinem Grund
    post_data['user[description]'] = 'Ich habe es bearbeitet! !! !! !!'
    print(post_data)
    response = session.post(profile_url, post_data)
    print(response)
    
if __name__ == '__main__':
    session = requests.Session()
    login(session)
    edit_profile(session)

Wenn es ausgeführt wird und Antwort [200] zurückgegeben wird, ist es erfolgreich.

Recommended Posts

Wagen Sie es, das Formular ohne Selen auszufüllen
So ermitteln Sie die Anzahl der CPUs ohne den Befehl sar
[Selen] Gehen Sie zur nächsten Seite, ohne auf Weiter zu klicken
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich möchte ssh mit dem Befehl expected automatisieren!
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
[Nichtkorrelationstest] Ich habe versucht, die Grenzlinie mit oder ohne Ablehnung zu löschen
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Ich möchte das neueste gcc verwenden, auch wenn ich keine Sudo-Berechtigungen habe! !!
Ich möchte ssh mit dem Befehl expected automatisieren! Teil 2
Ich möchte vorerst Selen bewegen [für Mac]
Ich habe versucht, die Anzeigenoptimierung mithilfe des Banditenalgorithmus zu simulieren
Starten Sie mit Python zu Selen
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
pyenv, virtualenv Verwenden Sie Docker, um die Umgebung ohne Verwendung zu verwalten
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren (Re-Challenge)
Ich habe versucht, das Zugriffsprotokoll mit Node.js auf dem Server auszugeben
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich wollte die Klassifizierung von CIFAR-10 mit dem Chainer-Trainer in Frage stellen
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
Ich habe versucht, ein Standbild aus dem Video auszuschneiden
Ich habe versucht, das Wahrscheinlichkeitsintegral (I zu Integral) zu berechnen.
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, die Lernfunktion im neuronalen Netzwerk sorgfältig zu verstehen, ohne die Bibliothek für maschinelles Lernen zu verwenden (zweite Hälfte).
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Ich habe versucht, die Trefferergebnisse von Hachinai mithilfe der Bildverarbeitung zu erhalten
Python - Ich habe versucht, die umfassende Notation des Wörterbuchs in ihrer ursprünglichen Form wiederherzustellen.
Ich habe versucht, die Ähnlichkeit der Frageabsicht mit Doc2Vec von gensim abzuschätzen
Ich habe das Schaben mit Selen gelernt, um ein Vorhersagemodell für Pferderennen zu erstellen.
Ich habe versucht, mehrere Servomotoren MG996R mit dem Servotreiber PCA9685 zu steuern.
Ich habe versucht, verschiedene Sätze mit der automatischen Zusammenfassungs-API "summpy" zusammenzufassen.
Ich habe versucht, die Phase der Geschichte mit COTOHA zu extrahieren und zu veranschaulichen
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Mit COTOHA habe ich versucht, den emotionalen Verlauf des Laufens von Meros zu verfolgen.
Ich habe versucht, die Neujahrskarte selbst mit Python zu analysieren
Ich habe versucht, die Lernfunktion im neuronalen Netzwerk sorgfältig zu verstehen, ohne die Bibliothek für maschinelles Lernen zu verwenden (erste Hälfte).
Ich habe versucht, die Informationen der ASPX-Site, die mit Selenium IDE ausgelagert wird, so programmlos wie möglich abzurufen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte kühl auf die Konsole ausgeben
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, den Befehl umask zusammenzufassen
Ich möchte mit dem Reim Teil1 umgehen
Ich versuchte das Weckwort zu erkennen
Ich habe versucht, Selen mit Headless-Chrom zu verwenden
Ich möchte mit dem Reim part3 umgehen
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Starten Sie den Router mit Python, Selenium, PhantomJS neu
Ich kann das Element in Selen nicht bekommen!
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Ich möchte den Fortschrittsbalken anzeigen
Ich habe versucht, Headless Chrome von Selenium zu verwenden