Ich habe kürzlich etwas über Scraping gelernt und es implementiert. Dieses Mal habe ich ein Schlüsselwort in " CiNii-Artikel - Suche nach japanischen Artikeln - Nationales Institut für Informatik " erstellt. Alle "Titel", "Autoren" und "Papierveröffentlichungsmedien" der Artikel, die auf das Schlüsselwort treffen, werden in CSV erfasst und gespeichert. Es war eine gute Studie, um das Schaben zu lernen, also schrieb ich einen Artikel. Wir hoffen, es hilft denen, die das Schaben lernen!
Unten ist der Code, den ich selbst geschrieben habe. Die Erklärung ist mit dem Code geschrieben, also schauen Sie sie sich bitte an. Besuchen Sie auch die Website " CiNii-Artikel - Suche nach japanischen Artikeln - Nationales Institut für Informatik " und Chrome Ich denke, dass sich das Verständnis vertiefen wird, wenn Sie es tun, während Sie die Struktur von HTML mithilfe der Überprüfungsfunktion von betrachten. Diesmal habe ich diesen Code als "search.py" gespeichert.
import sys
import os
import requests
import pandas as pd
from bs4 import BeautifulSoup
import re
def main():
url ='https://ci.nii.ac.jp/search?q={}&count=200'.format(sys.argv[1])
res = requests.get(url)
soup = BeautifulSoup(res.content , "html.parser")
#Überprüfen Sie die Anzahl der Suchvorgänge.
#Im Text'\n Suchergebnisse\n\t\n\t0 Fälle\n\t'Es enthält solche Daten.
search_count_result = soup.find_all("h1" , {"class":"heading"})[0].text
#Ermitteln Sie die Anzahl der Suchvorgänge mit regulären Ausdrücken
pattern = '[0-9]+'
result = re.search(pattern, search_count_result)
#Wenn kein Suchergebnis vorhanden ist, endet die Funktion hier
search_count = int(result.group())
if search_count == 0:
return print('Es gibt keine Suchergebnisse.')
print('Die Anzahl der Suchvorgänge beträgt' + str(search_count) + 'Es ist eine Sache.')
#Erstellen eines Verzeichnisses zum Speichern von Daten.
try:
os.makedirs(sys.argv[1])
print("Ein neues Verzeichnis wurde erstellt.")
except FileExistsError:
print("Es wird ein Verzeichnis sein, das bereits existiert.")
#Um alle Suchergebnisse zu erhalten, geben Sie die Nummer für ein.
#Dieses Mal ist es auf 200 eingestellt, da es alle 200 Fälle angezeigt wird.
if search_count // 200 == 0:
times = 1
elif search_count % 200 == 0:
times = search_count // 200
else:
times = search_count // 200 + 1
#Erwerben Sie Autoren, Titel und Publikationsmedien sofort
title_list = []
author_list = []
media_list = []
#Verarbeitung zum Löschen von Leerzeichen hier
escape = str.maketrans({"\n":'',"\t":''})
for time in range(times):
#URL abrufen
count = 1 + 200 * time
#search?q={}Geben Sie hier das Schlüsselwort ein, nach dem Sie suchen möchten.
#count=200&start={}Es zählt alle 200 und gibt die Nummer ein, von der aus angezeigt werden soll.
url ='https://ci.nii.ac.jp/search?q={}&count=200&start={}'.format(sys.argv[1], count)
print(url)
res = requests.get(url)
soup = BeautifulSoup(res.content , "html.parser")
for paper in soup.find_all("dl", {"class":"paper_class"}):#Drehen Sie die Schlaufe für jedes Papier.
#Titel holen
title_list.append(paper.a.text.translate(escape))
#Erwerb des Autors
author_list.append(paper.find('p' , {'class':"item_subData item_authordata"}).text.translate(escape))
#Erwerb von Publikationsmedien
media_list.append(paper.find('p' , {'class':"item_extraData item_journaldata"}).text.translate(escape))
#Als CSV als Datenrahmen speichern.
jurnal = pd.DataFrame({"Title":title_list , "Author":author_list , "Media":media_list})
#Die Codierung wird durchgeführt, um verstümmelte Zeichen zu vermeiden.
jurnal.to_csv(str(sys.argv[1] + '/' + str(sys.argv[1]) + '.csv'),encoding='utf_8_sig')
print('Ich habe eine Datei erstellt.')
print(jurnal.head())
if __name__ == '__main__':
#Der Code, den Sie nur ausführen möchten, wenn Sie das Modul direkt ausführen
main()
Ich habe versucht, das umzusetzen, was ich tatsächlich erstellt habe. Geben Sie zunächst Folgendes in das Terminal ein. Dieses Mal habe ich maschinelles Lernen als Suchbegriff eingegeben. Anstelle des maschinellen Lernens können Sie das Schlüsselwort eingeben, nach dem Sie suchen möchten.
python search.py maschinelles Lernen
Wenn alles gut geht, sieht es so aus:
Der Inhalt der CSV sieht so aus.
Wie war das? Ich habe vor ungefähr drei Tagen das Scraping gelernt, aber der Code war schmutzig, aber relativ einfach zu implementieren. Ich denke, ich habe noch mehr Zeit zum Lernen, also werde ich weiterhin mein Bestes geben.
Recommended Posts