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.
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
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/
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,
Grundsätzlich können Sie die Tabellen anderer Sites leicht abrufen, indem Sie den folgenden Teil des Codes ändern.
#Tabelle angeben
table = bsObj.findAll("table",{"class":"tablesorter"})[0]
rows = table.findAll("tr")
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