Comment faire

comment ajouter une connexion à un script d’analyseur bs4

chers connaisseurs,

tout d’abord, j’espère que vous allez bien et que tout se passe bien.

Je veux gratter un site Web qui nécessite d’abord une connexion avec un mot de passe, comment puis-je commencer à le gratter avec python en utilisant la bibliothèque beautifulsoup4 ?

Ci-dessous ce que je fais en ce moment :

importer des demandes de bs4 importer BeautifulSoup en tant que session BS = request.Session() session.headers.update({‘User-Agent’: ‘Mozilla/5.0’}) # cette page a besoin de l’en-tête ‘User-Agent` url= »https : //wordpress.org//{}/ » for page in range(1, 3): print(‘n— PAGE:’, page, ‘—n’) # read page with list of posts r = session.get(url.format(page))

mais que dois-je faire pour me connecter aux forums d’assistance WordPress ?

Notez que mon travail d’analyseur nécessite une connexion.

J’ai trouvé quelques options et j’ai regardé de plus près – ici je les ai ajoutées

la première de plusieurs méthodes : voyez de cette façon :

de bs4 import BeautifulSoup import urllib2 url = urllib2.urlopen(« http://www.python.org ») content = url.read() soup = BeautifulSoup(content) Comment le code doit-il être modifié pour s’adapter à la connexion ? Supposons que le site Web que je souhaite gratter est un forum qui nécessite une connexion. Un exemple est http://forum.arduino.cc/index.php

ou devrais-je utiliser mécaniser:

importer mechanize de bs4 importer BeautifulSoup importer urllib2 importer cookielib cj = cookielib.CookieJar() br = mechanize.Browser() br.set_cookiejar(cj) br.open(« https://id.arduino.cc/auth/login/ » ) br.select_form(nr=0) br.form[‘username’] = ‘nom d’utilisateur’ br.form[‘password’] = ‘mot de passe.’ br.submit() imprimer br.response().read()

en plus de cela, nous pouvons également procéder comme suit :

# Connectez-vous au site Web en utilisant uniquement la bibliothèque standard Python 3 import urllib.parse import urllib.request import http.cookiejar def scraper_login() : ####### modifiez les variables ici, comme l’URL, l’URL d’action, l’utilisateur, passez # votre base L’URL ici, sera utilisée pour les en-têtes et autres, avec et sans https:// base_url= »www.example.com » https_base_url= »https:// » + base_url # voici l’URL qui se trouve dans le formulaire action=’.. …’ # ajustez si nécessaire, peut être toutes sortes de choses étranges authentication_url = https_base_url + ‘/login’ # nom d’utilisateur et mot de passe pour la connexion username= »yourusername » password = ‘SoMePassw0rd!’ # nous utiliserons cette chaîne pour confirmer une connexion à la fin check_string = ‘Logout’ ####### le reste du script est logique # mais vous devrez peut-être modifier quelques éléments concernant la logique « token » # (peut être _token ou jeton ou _token_ ou secret … etc) # grande chose ! vous avez besoin d’un référent pour la plupart des pages ! et les en-têtes corrects sont les principaux headers={« Content-Type »: »application/x-www-form-urlencoded », « User-agent »: »Mozilla/5.0 Chrome/81.0.4044.92″, # Chrome 80+ selon recherche Web « Host »:base_url, « Origin »:https_base_url, « Referer »:https_base_url} # lancer le cookie jar (en utilisant : http.cookiejar et urllib.request) cookie_jar = http.cookiejar.CookieJar() opener = urllib.request .build_opener(urllib.request.HTTPCookieProcessor(cookie_jar)) urllib.request.install_opener(opener) # d’abord une simple requête, juste pour obtenir la page de connexion et analyser le jeton # (en utilisant : urllib.request) request = urllib.request. Request(https_base_url) response = urllib.request.urlopen(request) contents = response.read() voir plus .. craper_login()

mais il y a eencore plus simple,

une méthode qui nous y amène sans sélénium ni mécanisation, ou d’autres outils tiers, bien qu’elle soit semi-automatisée. Fondamentalement, lorsque nous nous connectons à un site de manière normale, nous nous identifions de manière unique à l’aide des informations d’identification, et la même identité est ensuite utilisée pour chaque autre interaction, qui est stockée dans les cookies et les en-têtes, pendant une brève période de temps. .

Ce que nous devons faire, c’est utiliser les mêmes cookies et en-têtes lorsque nous faisons nos requêtes http, et nous y serons.

Pour reproduire cela, procédez comme suit :

Dans le navigateur, ouvrez les outils de développement

on va sur le site, et on se connecte

Après la connexion, allez dans l’onglet réseau, puis actualisez la page

À ce stade, nous devrions voir une liste de demandes, la première étant le site réel – et ce sera notre objectif, car elle contient les données avec l’identité que nous pouvons utiliser pour Python et BeautifulSoup pour les gratter : nous pouvons maintenant cliquez sur la demande de site (celle du haut), survolez la copie, puis copiez en tant que cURL …

Que proposez-vous ici ?

hâte de vous entendre

Édité par apollodriver, 17 juin 2020 – 11:51.

Back to top button