[PYTHON] Cheet Sheet beim Schaben mit Google Colaboratory (Colab)

Inhaltsverzeichnis

Wie man schöne Suppe benutzt

So verstümmeln Sie verstümmelte Zeichen

Wenn Sie "Anfragen" verwenden, schreiben Sie diese normalerweise wie folgt:

from bs4 import BeautifulSoup
import requests

res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')

Da es Websites gibt, die damit verstümmelt sind, können die verstümmelten Zeichen durch die folgenden Schritte erheblich beseitigt werden.

from bs4 import BeautifulSoup
import requests

res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml", from_encoding='utf-8')

Codeliste finden

Erläuterung Codebeispiel
1 Suche soup.find('li')
Durchsuche alle Tags soup.find_all('li')
Attributsuche soup.find('li', href='html://www.google.com/')
Holen Sie sich mehrere Elemente soup.find_all(['a','p'])
ID-Suche soup.find('a', id="first")
Klassensuche soup.find('a', class_="first")
Attributerfassung first_link_element['href']
Textsuche soup.find('dt' ,text='Suchbegriff')
Suchen Sie nach Teiltextübereinstimmungen soup.find('dt' ,text=re.compile('Suchbegriff'))
Übergeordnetes Element abrufen .parent
Holen Sie sich eines der folgenden Elemente .next_sibling
Holen Sie sich alle folgenden Elemente .next_siblings
Holen Sie sich 1 vorheriges Element .previous_sibling
Holen Sie sich alle vorherigen Elemente .previous_siblings
Holen Sie sich Textelemente .string

Codeliste von select

Erläuterung Codebeispiel
1 Suche soup.select_one('CSS-Selektor')
Suche alle soup.select('CSS-Selektor')

Liste der Selektorspezifikationsmethoden

Erläuterung Codebeispiel
ID-Suche soup.select('a#id')
Klassensuche soup.select('a.class')
Mehrfachsuche nach Klasse soup.select('a.class1.class2')
Attributsuche 1 soup.select('a[class="class"]')
Attributsuche 2 soup.select('a[href="http://www.google.com"]')
Attributsuche 3 soup.select('a[href]')
Holen Sie sich untergeordnete Elemente soup.select('.class > a[href]')
Holen Sie sich Nachkommen Elemente soup.select('.class a[href]')

Ändern Sie das Attributelement entsprechend dem Element, das Sie suchen möchten. id, class, href, name, summary usw. Fügen Sie > ein, wenn Sie nur untergeordnete Elemente erhalten möchten (eine Ebene tiefer), und setzen Sie Leerzeichen, wenn Sie Nachkommenelemente erhalten möchten (alle eine Ebene tiefer).

Wie man Selen benutzt

Vorbereitungen für die Verwendung von Selen

Bei Verwendung mit Colab kann Selenium nicht heruntergeladen werden und es können keine UI-Spezifikationen angegeben werden. Diese Einstellung ist erforderlich.

#Laden Sie die für die Verwendung von Selen benötigten Bibliotheken herunter
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
!pip install selenium

from selenium import webdriver

#Einstellungen für die Verwendung des Treibers ohne Benutzeroberfläche
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)

Bei Verwendung von Selen und schöner Suppe

Als Anwendungsfall, wenn das Element nicht nur von Beautiful Soup erfasst werden kann Wenn Sie die Seite mit Seleniumu laden und dann die erforderlichen Informationen mit Beautiful Soup extrahieren möchten.

driver.get(url)
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, 'html.parser')

Selen-Basiscode

Erläuterung Codebeispiel
Öffne URL driver.get('URL')
Geh einen Schritt zurück driver.back()
Gehen Sie einen Schritt vorwärts driver.forward()
Browser aktualisieren driver.refresh()
Holen Sie sich die aktuelle URL driver.current_url
Holen Sie sich den aktuellen Titel driver.title
Aktuelles Fenster schließen driver.close()
Schließen Sie alle Fenster driver.quit()
Holen Sie sich Elemente in der Klasse driver.find_element_by_class_name('classname')
Element nach ID abrufen driver.find_element_by_id('id')
Holen Sie sich Elemente mit XPATH driver.find_element_by_xpath('xpath')
Textsuche auf XPATH driver.find_element_by_xpath('//*[text()="strings"]')
Text-Teilübereinstimmungssuche mit XPATH driver.find_element_by_xpath('//*[contains(text(), "strings")]')
Klicken Sie auf ein Element driver.find_element_by_xpath('XPATH').click()
Text Eingabe driver.find_element_by_id('ID').send_keys('strings')
Text abrufen driver.find_element_by_id('ID').text
Attribute abrufen(Für href) driver.find_element_by_id('ID').get_attribute('href')
Bestimmen Sie, ob das Element angezeigt wird driver.find_element_by_xpath('xpath').is_displayed()
Stellen Sie fest, ob das Element gültig ist driver.find_element_by_xpath('xpath').is_enabled()
Bestimmen Sie, ob ein Element ausgewählt ist driver.find_element_by_xpath('xpath').is_selected()

Wenn Sie eine Dropdown-Liste auswählen möchten

from selenium.webdriver.support.ui import Select

element = driver.find_element_by_xpath("xpath")
Select(element).select_by_index(indexnum) #Nach Index auswählen
Select(element).select_by_value("value") #Wert des Wertes
Select(element).select_by_visible_text("text") #Text anzeigen

Liste, wie Xpath angegeben wird

Erläuterung Codebeispiel
Wählen Sie alle Elemente aus //*
Wählen Sie alle Elemente aus //a
Wählen Sie ein Attribut @href
Wählen Sie mehrere Elemente aus [a or h2]
Element nach ID abrufen //*[@id="id"]
Holen Sie sich Elemente mit Klasse //*[@class="class"]
Textsuche //*[text()="strings"]
Teilweise Suche nach Text //*[contains(text(), "strings")]
Teilweise Übereinstimmung der Klasse //*contains(@class, "class")
Holen Sie sich den nächsten Knoten /following-sibling::*[1]
Zwei a Elemente nach /following-sibling::a[2]
Holen Sie sich den hinteren Knoten /preceding-sibling::*[1]

Informationen zum Abrufen anderer Knoten finden Sie hier

Beim Wechseln der Registerkarten

Wird verwendet, wenn beim Klicken eine neue Registerkarte ohne Seitenübergang erstellt wird

handle_array = driver.window_handles
driver.switch_to.window(handle_array[1])

Warten Sie, bis ein bestimmtes Element angezeigt wird


from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

#Warten Sie, bis alle Elemente auf der Seite geladen sind (Timeout-Beurteilung in 15 Sekunden).
WebDriverWait(driver, 15).until(EC.presence_of_all_elements_located)

#Warten Sie, bis das Element auf der Seite mit der angegebenen ID geladen ist (Timeout-Beurteilung in 15 Sekunden).
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.ID, 'ID-Name')))

#KLASSENname Warten Sie, bis das Element auf der angegebenen Seite geladen ist (Timeout-Beurteilung in 15 Sekunden).
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CLASS_NAME, 'Klassenname')))

#Warten Sie, bis das Element auf der Seite geladen ist, das durch den CLASS-Namen in Xpath angegeben ist (Timeout-Beurteilung in 15 Sekunden).
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, 'xpath')))

Was tun, wenn Sie nicht klicken können?

target = driver.find_element_by_xpath('xpath')
driver.execute_script("arguments[0].click();", target)

Wie man Pandas benutzt

So erstellen Sie einen Datenrahmen und fügen Daten hinzu

import pandas as pd
columns = ['Gegenstand 1', 'Punkt 2', 'Punkt 3', 'Punkt 4', 'Punkt 5']
df = pd.DataFrame(columns=columns)

#Datenerfassungsprozess

se = pd.Series([data1, data2, data3, data4, data5], columns)
df = df.append(se, columns)

Beim Herunterladen von Pandas-Daten

from google.colab import files

filename = 'filename.csv'
df.to_csv(filename, encoding = 'utf-8-sig') 
files.download(filename)

Beim Speichern von Pandas-Daten auf meinem Laufwerk

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)

So arbeiten Sie mit Tabellenkalkulationen

Vorbereitungen für die Arbeit mit Tabellenkalkulationen

#Laden Sie die Bibliotheken herunter, die für die Arbeit mit Tabellenkalkulationen erforderlich sind
!pip install gspread

from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspread

#Authentifizierungsprozess
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())

Häufig verwendeter Code

ss_id = 'Tabellenkalkulations-ID'
sht_name = 'Blattname'

workbook = gc.open_by_key(ss_id)
worksheet = workbook.worksheet(sht_name)

#Bei der Datenerfassung
worksheet.acell('B1').value
worksheet.cell(2, 1).value

#Beim Aktualisieren
worksheet.update_cell(row, column, 'Inhalt aktualisieren')

gspread Codeliste

Arbeitsmappenbetrieb

Erläuterung Codebeispiel
Wählen Sie die Tabelle nach ID aus gc.open_by_key('ID')
Wählen Sie die Tabelle nach URL aus gc.open_by_url('URL')
Holen Sie sich den Titel der Tabelle workbook.title
Tabellenkalkulations-ID abrufen workbook.id

Sitzbetrieb

Erläuterung Codebeispiel
Blatt für Blatt Name abrufen workbook.worksheet('Blattname')
Holen Sie sich ein Blatt mit Index workbook.get_worksheet(index)
Holen Sie sich alle Blätter in einem Array workbook.worksheets()
Blattnamen abrufen worksheet.title
Blatt-ID abrufen worksheet.id

Zellmanipulation

Erläuterung Codebeispiel
Datenerfassung nach A1-Methode worksheet.acell('B1').value
Datenerfassung nach der R1C1-Methode worksheet.cell(1, 2).value
Wählen Sie mehrere Zellen aus und erhalten Sie ein eindimensionales Array worksheet.range('A1:B10')
Daten für ausgewählte Zeilen abrufen worksheet.row_values(1)
Formel für ausgewählte Zeile abrufen worksheet.row_values(1,2)
Daten für ausgewählte Spalten abrufen worksheet.column_values(1)
Formel für ausgewählte Spalte abrufen worksheet.column_values(1,2)
Holen Sie sich alle Daten worksheet.get_all_values()
Aktualisieren Sie den Zellenwert mit der A1-Methode worksheet.update_acell('B1','Zu aktualisierender Wert')
Aktualisieren Sie den Zellenwert mit der R1C1-Methode worksheet.update_cell(1,2,'Zu aktualisierender Wert')

[Referenzseite] BeautifulSoup4-Spickzettel (Selektor usw.) Python3-Memo - Wunderschönes Soup4-Zeug Grundlagen des CSS-Selektors für das Web-Scraping Zusammenfassung der häufig verwendeten Betriebsmethoden des Selenium-Webdrivers Was ist XPath? Lerne die Grundlagen von XPath! Unverzichtbar für Web Scraping! Zusammenfassung von Xpath Zusammenfassung der Verwendung der gspread-Bibliothek! Arbeiten mit Tabellenkalkulationen in Python

Recommended Posts

Cheet Sheet beim Schaben mit Google Colaboratory (Colab)
Lernen Sie Python mit Google Colaboratory
Über das Lernen mit Google Colab
Probieren Sie OpenCV mit Google Colaboratory aus
Codefragmente, die häufig bei der Verarbeitung von Videos mit Google Colaboratory verwendet werden
Codefragmente, die häufig bei der Verwendung von BigQuery mit Google Colab verwendet werden
Beispielcode-Zusammenfassung bei der Arbeit mit Google-Tabellen von Google Colab
Persönlicher Spickzettel von Google Test / Mock
In Google Colaboratory registrierte Snippets (Scraping)
OpenCV-Funktionserkennung mit Google Colaboratory
Spielen Sie mit Turtle auf Google Colab
[Anfänger] Leicht verständliches Python-Web-Scraping mit Google Colaboratory
Google-Labor
So suchen Sie in Google Colaboratory nach Google Drive
Erstellen Sie einen Kaskadenklassifizierer mit Google Colaboratory
Verwendung des Jupyter-Kernels von Java mit Google Colaboratory
Verwenden Sie TPU und Keras mit Google Colaboratory
Maschinelles Lernen mit Pytorch in Google Colab
Schaben mit Selen
Schaben mit Selen ~ 2 ~
Scraping mit Python
Scraping mit Python
Schaben mit Selen
Curry Spickzettel
SQLite3 Spickzettel
pyenv Spickzettel
So laden Sie Dateien in Google Drive mit Google Colaboratory
Einfache Möglichkeit, mit Google Colab mit Python zu kratzen
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
Lernen Sie mit "Google Colaboratory" ganz einfach 100 Sprachverarbeitungsklopfen 2020.
Erstellen einer Umgebung für die Verwendung von CaboCha mit Google Colaboratory