[Python] Eine Tabelle mit Beautiful Soup kratzen

Aus Tabellen, die häufig aktualisiert werden oder die schwer zu kopieren und einzufügen sind Ich fragte mich, ob ich diesmal die Datenerfassung noch ein wenig effizienter gestalten könnte Ich habe den Code geschrieben, um mit Python zu kratzen und ihn in CSV zu schreiben.

Umgebung einstellen

MacBook Air (13-inch, Mid 2011) Prozessor: 1,8 GHz Intel Core i7 Speicher: 4 GB 1333 MHz DDR3 Version: 10.11.5 Python: 3.6.2

Vorbereitung

Installieren Sie schöne Suppe. BeautifulSoup ist eine Bibliothek, die Daten aus HTML und XML abrufen kann.

Diesmal habe ich es mit pip installiert.

$ pip3 install beautifulsoup4
Collecting beautifulsoup4
  Downloading beautifulsoup4-4.6.0-py3-none-any.whl (86kB)
    100% |████████████████████████████████| 92kB 1.8MB/s 
Installing collected packages: beautifulsoup4
Successfully installed beautifulsoup4-4.6.0

Weitere Optionen sind easy_install, apt-get sowie das direkte Herunterladen und Installieren von Code. Weitere Informationen finden Sie unter "Installieren der schönen Suppe" im folgenden offiziellen Dokument.

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Versuchen Sie, Tabellenelemente zu kratzen

Sobald Sie beautifulsoup4 installiert haben, Lassen Sie uns sofort die neuen Veröffentlichungsinformationen von O'Reilly abrufen.

** 20.03.2019 Update **: Die Schreibdatei wird jetzt mit mit geöffnet.

scraping_table.py


import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

#Angabe der URL
html = urlopen("https://www.oreilly.co.jp/ebook/")
bsObj = BeautifulSoup(html, "html.parser")

#Tabelle angeben
table = bsObj.findAll("table", {"class":"tablesorter"})[0]
rows = table.findAll("tr")

with open("ebooks.csv", "w", encoding='utf-8') as file:
    writer = csv.writer(file)
    for row in rows:
        csvRow = []
        for cell in row.findAll(['td', 'th']):
            csvRow.append(cell.get_text())
        writer.writerow(csvRow)

Die exportierte CSV sieht so aus. Wenn Sie dies regelmäßig tun, werden Sie keine neuen Veröffentlichungen verpassen! Übrigens ist im obigen Code, da er durch get_text () angegeben wurde, der Bildlink in der Spalte "In den Warenkorb" leer.

ISBN,Title,Preis,Ausgabemonat,in den Warenkorb legen
978-4-87311-755-3,Design zur Verbesserung der Leistung,"2,073",2016/06,
978-4-87311-700-3,Netzwerksicherheit durch Datenanalyse,"3,110",2016/06,
978-4-87311-754-6,UX-Strategie,"2,592",2016/05,
978-4-87311-768-3,Eine Einführung in die Mathematik beginnend mit Python,"2,419",2016/05,
978-4-87311-767-6,Was macht die Software ohne Ihr Wissen?,"2,246",2016/05,
978-4-87311-763-8,Fermentationstechnik,"3,110",2016/04,
978-4-87311-765-2,Erster Ansible,"2,764",2016/04,
978-4-87311-764-5,Kanban-Arbeitstechnik,"3,110",2016/03,

So bewerben Sie sich auf anderen Websites

Grundsätzlich können Sie die Tabellen anderer Sites leicht abrufen, indem Sie den folgenden Teil des Codes ändern.

  1. Ändern Sie den Klassennamen der Tabelle, die Sie abrufen möchten
  2. Wenn die Site mehrere Tabellen mit demselben Klassennamen enthält, geben Sie die Nummer durch die Nummer in [] an.
#Tabelle angeben
table = bsObj.findAll("table",{"class":"tablesorter"})[0]
rows = table.findAll("tr")

Über CSV

Da ich einen Mac verwende, war die exportierte CSV utf-8. Wenn Sie es so wie es ist in Excel lesen, werden die Zeichen verstümmelt, sodass es einfach zu verwenden ist, wenn Sie den Zeichencode konvertieren und formatieren. Wenn Sie wissen möchten, wie man konvertiert, klicken Sie hier (http://help.peatix.com/customer/portal/articles/530797-%E3%83%80%E3%82%A6%E3%83%B3%E3 % 83% AD% E3% 83% v % AB% E3% 81% AE% E6% 96% 87% E5% AD% 97% E5% 8C% 96% E3% 81% 91% E3% 81% AB% E3% 81% A4% E3% 81% 84 % E3% 81% A6-für-Mac) Bitte (eine andere Seite)

Recommended Posts

[Python] Eine Tabelle mit Beautiful Soup kratzen
Tischkratzen mit schöner Suppe
Versuchen Sie es mit Python + Beautiful Soup
Ein Memorandum bei der Verwendung von schöner Suppe
[Python] Ein Memorandum der schönen Suppe4
Kratzen mit Python und schöner Suppe
Scraping mit Python
Scraping von Websites mit JavaScript in Python
Kratzen mit schöner Suppe
Schreiben Sie einen einfachen kopflosen Web-Scraping-Bot in Python mit Beautiful Soup 4
Scraping mit Python 3.5 Async-Syntax
Web Scraping mit Selenium (Python)
[Python] Löschen Sie, indem Sie ein Tag mit Beautiful Soup angeben
Ich habe einen Line-Bot mit Python gemacht!
Mehrere Seiten mit Beautiful Soup verschrotten
Erstellen Sie mit tkinter eine Python-GUI
Erstellen einer einfachen Tabelle mit Stettytable
Kratzen mit schöner Suppe in 10 Minuten
[Python] Memo zum Erstellen von Scraping-Tools
[Python] Neunundneunzig Tabellen, die for-Anweisungen verwenden
Website-Scraping mit Beautiful Soup in Python
[Python] Praktisch schöne Suppe ~ Kratzen Sie die Triple Single Odds-Tabelle auf der offiziellen Website des Bootsrennens ~
Schöne Suppe
[Scraping] Python-Scraping
[Python] Analysieren Sie Splatoon 2-Ligaspieldaten mithilfe einer Korrelationskoeffiziententabelle
[Python] So kratzen Sie eine lokale HTML-Datei und geben sie mit Beautiful Soup als CSV aus
Rufen Sie die URL des Linkziels ab, indem Sie den Textsatz mit Python Scraping (Beautiful Soup) + XPath angeben
[Anfänger] Leicht verständliches Python-Web-Scraping mit Google Colaboratory
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Ein Programm, das Python zum Abspielen von Junk verwendet
Einstellungen bei Verwendung von Python 3-Anfragen und Beautiful Soup mit Crostini auf Chromebook
Python-Scraping-Memo
Python Scraping get_ranker_categories
Scraping mit Python
Erstellen Sie eine GIF-Datei mit Pillow in Python
Ich habe versucht, Web-Scraping mit Python und Selen
[Python] Teilen Sie eine große Flask-Datei mit Blueprint
Scraping mit Python
Schöne Suppe verschüttet
Starten Sie Python
Python Scraping eBay
Erstellen Sie eine Webmap mit Python und GDAL
Ein Forscher eines Pharmaunternehmens fasste das Web-Scraping mit Python zusammen
Anzeigen von Arzneimittelbewertungen mithilfe von Listen in Python
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Python Scraping get_title
Python: Scraping Teil 1
Führen Sie Python-Dateien mit Django aus HTML aus
So suchen Sie HTML-Daten mit Beautiful Soup
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Kratzmodul "Gaspacho", das einfacher zu verwenden ist als Beautiful Soup
Führen Sie Python-Skripte in Excel aus (mit xlwings).
Python: Scraping Teil 2
Ich habe mit Python verschiedene Dinge ausprobiert: Schaben (Beautiful Soup + Selenium + PhantomJS) und morphologische Analyse
[Python] Implementierung von Clustering mit einem gemischten Gaußschen Modell