Zusammenfassung nützlicher Techniken von Scrapy in Python

Python Scrapy ist eine Bibliothek zum Scraping und Crawlen, die verschiedene Aufgaben ausführen kann

In letzter Zeit habe ich viel Kratzarbeit in meiner Arbeit bekommen. Ich habe das Scraping mit einer PHP-Bibliothek namens simplehtml implementiert.

Aus diesem Grund habe ich kürzlich mit Pythons Scrapy Scraping-Arbeiten durchgeführt. (PHP ist einfach, aber ich habe auch den persönlichen Wunsch, PHP zu absolvieren.)

Warum ich denke, dass Scrapy tief ist

Die Hauptgründe, warum Scrapy gut ist, sind folgende.

――Sie können kompliziertes Schaben machen

Ich denke das kann erwähnt werden. Bisher wurden beim Scraping URL-Muster gelesen. Scrapy bietet eine Methode für Bildschirmübergänge, mit der Sie beispielsweise Formulare mit viel weniger Speicherressourcen senden können als die Browser-Automatisierung, die Sie mit *** Selen *** durchführen können.

Praktische Technik in Scrapy gefunden

Basic

*** Scrapy installieren ***

$pip install scrapy

*** Starten Sie das Scrapy Spider-Projekt ***

$scrapy startproject [project_name] [project_dir]

Befehlszeile

*** Liste der erstellten Spider-Projekte ***

$scrapy list

*** Erstelle eine neue Spinne im erstellten Projekt ***

#Domainnamen hinzufügen
$scrapy genspider [spider_name] mydomain.com

** Geben Sie die URL an, wenn Sie die Befehlszeile ausführen **

$scrapy crawl -a start_urls="http://example1.com,http://example2.com" [spider_name]

*** Ausgabe als CSV ***

$scrapy crawl -o csv_file_name.csv [spider_name]

*** Ausgabe als JSON ***

$scrapy crawl -o json_file_name.json [spider_name]

Shell Edition

** Starten Sie die Scrapy-Shell **

$ scrapy shell [URL]

** Alle Seiten anzeigen **

#Antwort kann ohne Definition verwendet werden
response.body

** Alle Links erhalten **

for link in response.css('a::attr(href)'):
   print link.get()

Bibliotheksausgabe

** Verwenden Sie reguläre Ausdrücke **

#Wenn eine bestimmte Datei in der href des a-Tags übereinstimmt
matched = response.css('a::attr(href)').re(r'detail\.php')
if len(matched) > 0:
   print 'matched'

#Wenn ein bestimmtes Japanisch in der Zeichenfolge des a-Tags übereinstimmt
matched = response.css('a::text').re(u'Zusammenfassung')
if len(matched) > 0:
   print 'matched'

** Get Tag **

#Holen Sie sich ein Tag
response.css('a')

** Holen Sie sich mit Selektor **

#Holen Sie sich ein Tag
response.css('a.link')

#Holen Sie sich mehrere Klassen<li class="page next"></li>
response.css('li.page.next')

** Relativen Pfad in URL konvertieren **

for link in response.css('a::attr(href)'):
   print response.urljoin(link.get())

** Formularinformationen senden **

scrapy.FormRequest(response,formdata={"username":"login_username","password":"login_password"}

** Iterative Verarbeitung von untergeordneten Elementen des von XPath erworbenen Elements **

#Holen Sie sich das DIV-Element
divs = response.xpath('//div')
#Wiederholen Sie das P-Element in DIV
for p in divs.xpath('.//p'):  
     print(p.get())

** Übergang zu einer anderen Seite **

#self.parse(self,response)Als Rückruffunktion
yield scrapy.Request([url],callback=self.parse)

Andere

** Artikel erstellen (items.py direkt unter Projekt bearbeiten) ** Originalgeschichte

class Product(scrapy.Item):
    name = scrapy.Field()
    price = scrapy.Field()
    stock = scrapy.Field()
    tags = scrapy.Field()
    last_updated = scrapy.Field(serializer=str)

Stichprobe

** Gehen Sie zur Detailseite, bis die Liste keine weiteren Elemente mehr enthält (es funktioniert nicht mehr so wie es ist, also fügen Sie es bitte in die Klasse ein) **

    def parse(self, response):
            title = a.css('::text').extract_first()
            title_match = a.css('::text').re(u'Ausbildung')
            if len(title_match) > 0:
                    "title":title,
                    "url":response.urljoin(link_param)
                }
                ptn = re.search("\/jinzaiikusei\/\w+\/",url)
                if ptn:
                    self.scraping_list.append(url)
        yield scrapy.Request(self.scraping_list[0],callback=self.parse_detail)
        pass

    def parse_detail(self, response):
         for item in response.css('a'):
             title =  item.css('::text').extract_first()
             url =  item.css('::attr(href)').extract_first()
             title_matched = item.css('::text').re(u'Ausbildung')
             url_matched = item.css('::attr(href)').re(r'jinzaiikusei\/.*\/.*\.html')
             if url_matched:
                 item = {
                         "title":title,
                         "url":url
                    }
                 yield item
         self.current_index = self.current_index + 1
         if self.current_index < len(self.scraping_list):

             yield scrapy.Request(self.scraping_list[self.current_index],callback=self.parse_detail)
         else:
             pass

Änderungsprotokoll

--2019 / 12/06 Neu erstellt --2019 / 12/07 Bibliothekstechniken hinzugefügt --2019 / 12/09 Bibliothekstechniken hinzugefügt (Formulareingabe usw.) --2019 / 12/16 Kapitel über Artikel hinzugefügt --2019 / 12/21 Befehl hinzugefügt

Recommended Posts

Zusammenfassung nützlicher Techniken von Scrapy in Python
Zusammenfassung der Petit-Techniken für Linux-Befehle
Zusammenfassung der Python-Argumente
Zusammenfassung häufig verwendeter Python-Arrays (für mich)
Python-E-Book-Zusammenfassung nützlich für die frei lesbare Datenanalyse
Zusammenfassung der Python-Dateivorgänge
Zusammenfassung der Python3-Listenoperationen
Zusammenfassung nützlicher Tipps für das Linux-Terminal ☆ Täglich aktualisiert
Zusammenfassung der Python-Umgebungseinstellungen für mich [mac] [ubuntu]
Zusammenfassung der Tools zum Betreiben der Windows-Benutzeroberfläche mit Python
Zusammenfassung der Vorverarbeitungsmethoden für Python-Anfänger (Pandas-Datenrahmen)
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Zusammenfassung der Unterstützung von Hash-Operationen (Dictionary) für Ruby und Python
Eine kurze Zusammenfassung der Python-Sammlung
Python-Kurs für datenwissenschaftlich-nützliche Techniken
Erste Schritte mit Python3
Aufzeichnung der Python-Einführung für Neulinge
[Für Wettkampfprofis] Zusammenfassung der Verdoppelung
Zusammenfassung der Python-Indizes und -Slices
[OpenCV; Python] Zusammenfassung der Funktion findcontours
Python-Zusammenfassung
Eine kurze Zusammenfassung von Graphviz in Python (nur für Mac erklärt)
Python-Zusammenfassung
Python-Technik für diejenigen, die Anfänger loswerden wollen
Zusammenfassung der Seiten, die zum Studium des Deep Learning Framework Chainer nützlich sind
[Python] Zusammenfassung der Verwendung von Pandas
[Python] Protokoll des Studientreffens für Anfänger (7/15)
Zusammenfassung der Methoden zur automatischen Ermittlung von Schwellenwerten
Detaillierte Python-Techniken für die Datenformung (1)
[Python2.7] Zusammenfassung der Verwendung von unittest
[Python] Ein Skript, das für die Excel / CSV-Verarbeitung nützlich ist
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Zusammenfassung der Verwendung der Python-Liste
Detaillierte Python-Techniken für die Datenformung (2)
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Zusammenfassung der Achsenoptionsspezifikation von Python "numpy.sum (...)"
Nützlich für den Alltag !? Halbautomatisierung der stärksten experimentellen Planungsmethode von COSPA mit Python
2016-10-30 sonst für Python3> für:
Python [für mich]
Datenanalyse in Python Zusammenfassung der Quellen, die Anfänger zuerst betrachten sollten
Zusammenfassung der Korrespondenz zwischen Ruby- und Python-Array-Operationen
Die Geschichte, dass die Lernkosten von Python niedrig sind
Zusammenfassung des Python-Tutorials
Zusammenfassung der Verwendung von MNIST mit Python
Installation von Python 3 und Flask [Zusammenfassung der Umgebungskonstruktion]
Python-Grundlagen ①
Grundlagen von Python ①
Bildverarbeitung? Die Geschichte, Python für zu starten
Einfaches Verständnis von Python für & Arrays (für Super-Anfänger)
Kopie von Python
[Python] Zusammenfassung der S3-Dateivorgänge mit boto3
PDF-Dateien und Websites zum Erlernen von Python 3
Code zum Überprüfen des Betriebs von Python Matplot lib
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
Python-bezogene Zusammenfassung
E / A-bezogene Zusammenfassung von Python und Fortan
Zusammenfassung der Kernel / Python-Version für jede Debian-Version
[Hikari-Python] Kapitel 09-01 Klassen (Grundlagen von Objekten)