Lorsque vous utilisez requests
, vous l'écrivez normalement comme suit
from bs4 import BeautifulSoup
import requests
res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')
Puisqu'il y a des sites qui sont brouillés avec cela, les caractères brouillés peuvent être considérablement éliminés en procédant comme suit.
from bs4 import BeautifulSoup
import requests
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml", from_encoding='utf-8')
La description | Exemple de code |
---|---|
1 recherche | soup.find('li') |
Rechercher tous les tags | soup.find_all('li') |
Recherche d'attributs | soup.find('li', href='html://www.google.com/') |
Obtenez plusieurs éléments | soup.find_all(['a','p']) |
recherche d'identifiant | soup.find('a', id="first") |
recherche de classe | soup.find('a', class_="first") |
Acquisition d'attributs | first_link_element['href'] |
Recherche de texte | soup.find('dt' ,text='Rechercher un mot') |
Rechercher des correspondances de texte partielles | soup.find('dt' ,text=re.compile('Rechercher un mot')) |
Obtenir l'élément parent | .parent |
Obtenez 1 des éléments suivants | .next_sibling |
Obtenez tous les éléments suivants | .next_siblings |
Obtenir 1 élément précédent | .previous_sibling |
Obtenez tous les éléments précédents | .previous_siblings |
Obtenir des éléments de texte | .string |
La description | Exemple de code |
---|---|
1 recherche | soup.select_one('sélecteur css') |
Rechercher tout | soup.select('sélecteur css') |
La description | Exemple de code |
---|---|
recherche d'identifiant | soup.select('a#id') |
recherche de classe | soup.select('a.class') |
Recherche multiple de classe | soup.select('a.class1.class2') |
Recherche d'attribut 1 | soup.select('a[class="class"]') |
Recherche d'attribut 2 | soup.select('a[href="http://www.google.com"]') |
Recherche d'attribut 3 | soup.select('a[href]') |
Obtenir des éléments enfants | soup.select('.class > a[href]') |
Obtenir des éléments descendants | soup.select('.class a[href]') |
Modifiez l'élément d'attribut en fonction de l'élément que vous souhaitez rechercher.
ʻId,
class,
href,
name,
summary, etc. Insérez
>si vous voulez obtenir seulement des éléments enfants (un niveau plus bas), et mettez
espace` si vous voulez obtenir des éléments descendants (tous d'un niveau inférieur).
Lors de l'utilisation avec Colab, Selenium ne peut pas être téléchargé et les spécifications de l'interface utilisateur ne peuvent pas être spécifiées. Ce paramètre est obligatoire.
#Téléchargez les bibliothèques nécessaires pour utiliser Selenium
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
!pip install selenium
from selenium import webdriver
#Paramètres d'utilisation du pilote sans interface utilisateur
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',options=options)
driver.implicitly_wait(10)
En tant que cas d'utilisation, lorsque l'élément ne peut pas être acquis par Beautiful Soup Si vous souhaitez charger la page avec seleniumu, puis extraire les informations nécessaires avec Beautiful Soup.
driver.get(url)
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, 'html.parser')
La description | Exemple de code |
---|---|
Ouvrir le lien | driver.get('URL') |
Reculer d'une étape | driver.back() |
Faites un pas en avant | driver.forward() |
Mettre à jour le navigateur | driver.refresh() |
Obtenez l'URL actuelle | driver.current_url |
Obtenir le titre actuel | driver.title |
Fermer la fenêtre actuelle | driver.close() |
Fermez toutes les fenêtres | driver.quit() |
Obtenez des éléments en classe | driver.find_element_by_class_name('classname') |
Obtenir l'élément par ID | driver.find_element_by_id('id') |
Obtenez des éléments avec XPATH | driver.find_element_by_xpath('xpath') |
Recherche de texte sur XPATH | driver.find_element_by_xpath('//*[text()="strings"]') |
Recherche de correspondance partielle de texte avec XPATH | driver.find_element_by_xpath('//*[contains(text(), "strings")]') |
Cliquez sur un élément | driver.find_element_by_xpath('XPATH').click() |
Saisie de texte | driver.find_element_by_id('ID').send_keys('strings') |
Obtenir du texte | driver.find_element_by_id('ID').text |
Obtenir des attributs(Pour href) | driver.find_element_by_id('ID').get_attribute('href') |
Déterminer si l'élément est affiché | driver.find_element_by_xpath('xpath').is_displayed() |
Déterminer si l'élément est valide | driver.find_element_by_xpath('xpath').is_enabled() |
Déterminer si un élément est sélectionné | driver.find_element_by_xpath('xpath').is_selected() |
from selenium.webdriver.support.ui import Select
element = driver.find_element_by_xpath("xpath")
Select(element).select_by_index(indexnum) #Sélectionnez par index
Select(element).select_by_value("value") #valeur de valeur
Select(element).select_by_visible_text("text") #Afficher le texte
La description | Exemple de code |
---|---|
Sélectionnez tous les éléments | //* |
Sélectionnez tous les éléments | //a |
Sélectionnez un attribut | @href |
Sélectionnez plusieurs éléments | [a or h2] |
Obtenir l'élément par identifiant | //*[@id="id"] |
Obtenez des éléments avec classe | //*[@class="class"] |
Recherche de texte | //*[text()="strings"] |
Recherche partielle de texte | //*[contains(text(), "strings")] |
Correspondance partielle de classe | //*contains(@class, "class") |
Obtenez le nœud suivant | /following-sibling::*[1] |
Deux éléments après | /following-sibling::a[2] |
Récupérez le nœud arrière | /preceding-sibling::*[1] |
Reportez-vous ici pour savoir comment obtenir d'autres nœuds
Utilisé lorsqu'un nouvel onglet est créé sans transition de page lorsque vous cliquez dessus
handle_array = driver.window_handles
driver.switch_to.window(handle_array[1])
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
#Attendez que tous les éléments de la page soient chargés (jugement du délai d'attente dans 15 secondes)
WebDriverWait(driver, 15).until(EC.presence_of_all_elements_located)
#Attendez que l'élément de la page avec l'ID spécifié soit chargé (jugement du délai d'expiration dans 15 secondes)
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.ID, 'Nom de l'ID')))
#Nom de la CLASSE Attendez que l'élément de la page spécifiée soit chargé (jugement de délai d'attente dans 15 secondes)
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CLASS_NAME, 'Nom du cours')))
#Attendez que l'élément de la page spécifié par le nom CLASS dans Xpath soit chargé (jugement de délai d'attente dans 15 secondes)
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, 'xpath')))
target = driver.find_element_by_xpath('xpath')
driver.execute_script("arguments[0].click();", target)
import pandas as pd
columns = ['Objet 1', 'Point 2', 'Point 3', 'Point 4', 'Point 5']
df = pd.DataFrame(columns=columns)
#Processus d'acquisition de données
se = pd.Series([data1, data2, data3, data4, data5], columns)
df = df.append(se, columns)
from google.colab import files
filename = 'filename.csv'
df.to_csv(filename, encoding = 'utf-8-sig')
files.download(filename)
from google.colab import drive
filename = filename.csv'
path = '/content/drive/My Drive/' + filename
with open(path, 'w', encoding = 'utf-8-sig') as f:
df.to_csv(f)
#Téléchargez les bibliothèques nécessaires pour travailler avec des feuilles de calcul
!pip install gspread
from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspread
#Processus d'authentification
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())
ss_id = 'ID de la feuille de calcul'
sht_name = 'Nom de la feuille'
workbook = gc.open_by_key(ss_id)
worksheet = workbook.worksheet(sht_name)
#Lors de l'acquisition de données
worksheet.acell('B1').value
worksheet.cell(2, 1).value
#Lors de la mise à jour
worksheet.update_cell(row, column, 'Mettre à jour le contenu')
La description | Exemple de code |
---|---|
Sélectionnez la feuille de calcul par ID | gc.open_by_key('ID') |
Sélectionnez la feuille de calcul par URL | gc.open_by_url('URL') |
Obtenez le titre de la feuille de calcul | workbook.title |
Obtenir l'identifiant de la feuille de calcul | workbook.id |
La description | Exemple de code |
---|---|
Obtenir la feuille par nom de feuille | workbook.worksheet('Nom de la feuille') |
Obtenir une feuille avec index | workbook.get_worksheet(index) |
Obtenir toutes les feuilles dans un tableau | workbook.worksheets() |
Obtenir le nom de la feuille | worksheet.title |
Obtenir l'ID de la feuille | worksheet.id |
La description | Exemple de code |
---|---|
Acquisition de données par méthode A1 | worksheet.acell('B1').value |
Acquisition de données par méthode R1C1 | worksheet.cell(1, 2).value |
Sélectionnez plusieurs cellules et obtenez un tableau unidimensionnel | worksheet.range('A1:B10') |
Obtenir des données pour les lignes sélectionnées | worksheet.row_values(1) |
Obtenir la formule pour la ligne sélectionnée | worksheet.row_values(1,2) |
Obtenir des données pour les colonnes sélectionnées | worksheet.column_values(1) |
Obtenir la formule pour la colonne sélectionnée | worksheet.column_values(1,2) |
Obtenez toutes les données | worksheet.get_all_values() |
Mettre à jour la valeur de la cellule avec la méthode A1 | worksheet.update_acell('B1','Valeur à mettre à jour') |
Mettre à jour la valeur de la cellule avec la méthode R1C1 | worksheet.update_cell(1,2,'Valeur à mettre à jour') |
[Site de référence] Aide-mémoire BeautifulSoup4 (sélecteur, etc.) Mémo Python3 - Beau truc de Soup4 Bases du sélecteur CSS pour le web scraping Résumé des méthodes de fonctionnement fréquemment utilisées de Selenium webdriver Qu'est-ce que XPath? Apprenez les bases de XPath! Indispensable pour le web scraping! Résumé de Xpath Résumé de l'utilisation de la bibliothèque gspread! Travailler avec des feuilles de calcul en Python