Inhaltsverzeichnis
Experimenteller Prozess
Das Ziel, das wir dieses Mal crawlen müssen, ist Sichuan Alle Neuigkeiten und Informationen über die School of Public Policy and Management der Universität. Daher müssen wir die Layoutstruktur der offiziellen Website der School of Public Policy and Management kennen.
Im Crawler werde ich die folgenden Funktionspunkte implementieren:
4.获得抓取数据
Heim Backend-Entwicklung Python-Tutorial Scrapy erfasst Beispiele von College-Nachrichtenberichten

Scrapy erfasst Beispiele von College-Nachrichtenberichten

Jun 21, 2017 am 10:47 AM
scrapy 学院 抓取 报告 新闻

Fangen Sie alle Nachrichtenanfragen von der offiziellen Website der Sichuan University School of Public Administration () ab.

Experimenteller Prozess

1. Bestimmen Sie das Crawling-Ziel.
2 .
3. Crawling-Regeln zum Schreiben/Debuggen.
4. Crawling-Daten ermitteln

Das Ziel, das wir dieses Mal crawlen müssen, ist Sichuan Alle Neuigkeiten und Informationen über die School of Public Policy and Management der Universität. Daher müssen wir die Layoutstruktur der offiziellen Website der School of Public Policy and Management kennen.

WeChat-Screenshot_20170515223045.png
Hier stellen wir fest, dass wir nicht alle Nachrichteninformationen direkt auf der Startseite der offiziellen Website erfassen können. Zum Aufrufen müssen wir auf „Mehr“ klicken die allgemeine Nachrichtenspalte.

Paste_Image .png
Wir haben die spezifische Nachrichtenspalte gesehen, aber diese entspricht offensichtlich nicht unseren Vorstellungen Anforderungen: Die aktuelle Nachrichten-Webseite kann nur die Zeit, den Titel und die URL der Nachrichten erfassen, aber den Inhalt der Nachrichten nicht erfassen. Daher müssen wir zur Nachrichtendetailseite gehen, um den spezifischen Inhalt der Nachrichten zu erfassen >

2. Crawling-Regeln formulieren

Durch die Analyse im ersten Teil werden wir denken, dass wir auf der Nachrichtenaktualisierungsseite klicken müssen, wenn wir die spezifischen Informationen eines Nachrichtenartikels erfassen möchten Klicken Sie auf die Nachrichtendetailseite, um den spezifischen Inhalt der Nachrichten zu erfassen.

Paste_Image.png
Wir Ich habe herausgefunden, dass wir die Daten, die wir benötigen, direkt von der Nachrichtendetailseite abrufen können: Titel, Zeit, Inhalt.URL.
Okay, jetzt haben wir eine klare Vorstellung davon, wie wir eine Nachricht abrufen können , wie man den gesamten Nachrichteninhalt crawlt?

Das ist für uns offensichtlich nicht schwierig


Wir können den Seitensprung-Button unten sehen Nachrichtenspalte. Dann können wir alle Nachrichten über die Schaltfläche „Nächste Seite“ abrufen.

Um unsere Gedanken zu ordnen, können wir uns eine offensichtliche Crawling-Regel ausdenken:
Fangen Sie alle Nachrichtenlinks unter „Nachrichten“ ab Abschnitt“ und gehen Sie zum Link „Nachrichtendetails“, um alle Nachrichteninhalte zu crawlen.

3. Crawl-Regeln „Schreiben/Debuggen“

Um die Granularität des Debuggens des Crawlers so gering wie möglich zu halten , ich werde die Schreib- und Debugging-Module miteinander kombinieren.

Im Crawler werde ich die folgenden Funktionspunkte implementieren:


1. Alle News-Links unter der News-Spalte auf einer Seite aussteigen

2. Geben Sie die Nachrichtendetails über den gecrawlten Nachrichtenlink ein, um die erforderlichen Daten (hauptsächlich Nachrichteninhalte) zu crawlen.
3. Crawlen Sie alle Nachrichten durch eine Schleife sind:



1. Die Basisdaten unter einer Seite herauskriechen.

2. Die gecrawlten Daten zweimal durchforsten.
3. Alle Daten auf der Webseite durch eine Schleife durchforsten .

Ohne weitere Umschweife, fangen wir jetzt an.


3.1 Alle News-Links unter der News-Spalte auf einer Seite ausklimmen

Paste_Image.png

Durch die Analyse des Quellcodes der Nachrichtenspalte haben wir festgestellt, dass die Struktur der erfassten Daten
Paste_Image.png

Dann müssen wir nur noch den Selektor des Crawlers auf (li:newsinfo_box_cf ) positionieren und ihn dann in einer for-Schleife abrufen
Den Code schreiben
Testen und bestehen!

Paste_Image.png
import scrapyclass News2Spider(scrapy.Spider):
    name = "news_info_2"
    start_urls = ["http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=1",
    ]def parse(self, response):for href in response.xpath("//div[@class='newsinfo_box cf']"):
            url = response.urljoin(href.xpath("div[@class='news_c fr']/h3/a/@href").extract_first())
Nach dem Login kopieren

3.2 Geben Sie die Nachrichtendetails über den gecrawlten Nachrichtenlink ein, um die zu crawlen Erforderliche Daten (hauptsächlich Nachrichteninhalte)
Jetzt habe ich eine Reihe von URLs erhalten und muss nun jede URL eingeben, um den Titel, die Zeit und den Inhalt zu erfassen, die ich benötige. Die Code-Implementierung ist ebenfalls recht einfach Der Originalcode erfasst eine URL, ich muss nur die URL eingeben und die entsprechenden Daten erfassen. Sie müssen also nur eine weitere Crawling-Methode schreiben, um die Nachrichtendetailseite aufzurufen, und sie mit scapy.request aufrufen >
Code schreiben
Nach der Integration in den Originalcode steht:

Test, bestanden!

#进入新闻详情页的抓取方法
def parse_dir_contents(self, response):item = GgglxyItem()item['date'] = response.xpath("//div[@class='detail_zy_title']/p/text()").extract_first()item['href'] = responseitem['title'] = response.xpath("//div[@class='detail_zy_title']/h1/text()").extract_first()
        data = response.xpath("//div[@class='detail_zy_c pb30 mb30']")item['content'] = data[0].xpath('string(.)').extract()[0]
        yield item
Nach dem Login kopieren

Paste_Image.png

import scrapyfrom ggglxy.items import GgglxyItemclass News2Spider(scrapy.Spider):
    name = "news_info_2"
    start_urls = ["http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=1",
    ]def parse(self, response):for href in response.xpath("//div[@class='newsinfo_box cf']"):
            url = response.urljoin(href.xpath("div[@class='news_c fr']/h3/a/@href").extract_first())#调用新闻抓取方法yield scrapy.Request(url, callback=self.parse_dir_contents)#进入新闻详情页的抓取方法                def parse_dir_contents(self, response):
            item = GgglxyItem()
            item['date'] = response.xpath("//div[@class='detail_zy_title']/p/text()").extract_first()
            item['href'] = response
            item['title'] = response.xpath("//div[@class='detail_zy_title']/h1/text()").extract_first()
            data = response.xpath("//div[@class='detail_zy_c pb30 mb30']")
            item['content'] = data[0].xpath('string(.)').extract()[0]yield item
Nach dem Login kopieren

Zu diesem Zeitpunkt fügen wir eine Schleife hinzu:

Zum Originalcode hinzufügen:
Test:

NEXT_PAGE_NUM = 1 

NEXT_PAGE_NUM = NEXT_PAGE_NUM + 1if NEXT_PAGE_NUM<11:next_url = &#39;http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=%s&#39; % NEXT_PAGE_NUM
            yield scrapy.Request(next_url, callback=self.parse)
Nach dem Login kopieren

Paste_Image.png

import scrapyfrom ggglxy.items import GgglxyItem

NEXT_PAGE_NUM = 1class News2Spider(scrapy.Spider):
    name = "news_info_2"
    start_urls = ["http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=1",
    ]def parse(self, response):for href in response.xpath("//div[@class=&#39;newsinfo_box cf&#39;]"):
            URL = response.urljoin(href.xpath("div[@class=&#39;news_c fr&#39;]/h3/a/@href").extract_first())yield scrapy.Request(URL, callback=self.parse_dir_contents)global NEXT_PAGE_NUM
        NEXT_PAGE_NUM = NEXT_PAGE_NUM + 1if NEXT_PAGE_NUM<11:
            next_url = &#39;http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=%s&#39; % NEXT_PAGE_NUMyield scrapy.Request(next_url, callback=self.parse) def parse_dir_contents(self, response):
            item = GgglxyItem() 
            item[&#39;date&#39;] = response.xpath("//div[@class=&#39;detail_zy_title&#39;]/p/text()").extract_first()
            item[&#39;href&#39;] = response 
            item[&#39;title&#39;] = response.xpath("//div[@class=&#39;detail_zy_title&#39;]/h1/text()").extract_first()
            data = response.xpath("//div[@class=&#39;detail_zy_c pb30 mb30&#39;]")
            item[&#39;content&#39;] = data[0].xpath(&#39;string(.)&#39;).extract()[0] yield item
Nach dem Login kopieren

抓到的数量为191,但是我们看官网发现有193条新闻,少了两条.
为啥呢?我们注意到log的error有两条:
定位问题:原来发现,学院的新闻栏目还有两条隐藏的二级栏目:
比如:


Paste_Image.png


对应的URL为


Paste_Image.png


URL都长的不一样,难怪抓不到了!
那么我们还得为这两条二级栏目的URL设定专门的规则,只需要加入判断是否为二级栏目:

  if URL.find(&#39;type&#39;) != -1:      yield scrapy.Request(URL, callback=self.parse)
Nach dem Login kopieren

组装原函数:

import scrapy
from ggglxy.items import GgglxyItem

NEXT_PAGE_NUM = 1class News2Spider(scrapy.Spider):
    name = "news_info_2"
    start_urls = ["http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=1",
    ]def parse(self, response):for href in response.xpath("//div[@class=&#39;newsinfo_box cf&#39;]"):
            URL = response.urljoin(href.xpath("div[@class=&#39;news_c fr&#39;]/h3/a/@href").extract_first())if URL.find(&#39;type&#39;) != -1:yield scrapy.Request(URL, callback=self.parse)yield scrapy.Request(URL, callback=self.parse_dir_contents)
        global NEXT_PAGE_NUM
        NEXT_PAGE_NUM = NEXT_PAGE_NUM + 1if NEXT_PAGE_NUM<11:
            next_url = &#39;http://ggglxy.scu.edu.cn/index.php?c=special&sid=1&page=%s&#39; % NEXT_PAGE_NUMyield scrapy.Request(next_url, callback=self.parse) def parse_dir_contents(self, response):
            item = GgglxyItem() 
            item[&#39;date&#39;] = response.xpath("//div[@class=&#39;detail_zy_title&#39;]/p/text()").extract_first()
            item[&#39;href&#39;] = response 
            item[&#39;title&#39;] = response.xpath("//div[@class=&#39;detail_zy_title&#39;]/h1/text()").extract_first()
            data = response.xpath("//div[@class=&#39;detail_zy_c pb30 mb30&#39;]")
            item[&#39;content&#39;] = data[0].xpath(&#39;string(.)&#39;).extract()[0] yield item
Nach dem Login kopieren

测试:


Paste_Image.png

我们发现,抓取的数据由以前的193条增加到了238条,log里面也没有error了,说明我们的抓取规则OK!

4.获得抓取数据

<code class="haxe">     scrapy crawl <span class="hljs-keyword">new<span class="hljs-type">s_info_2 -o <span class="hljs-number">0016.json</span></span></span></code><br/><br/>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonScrapy erfasst Beispiele von College-Nachrichtenberichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Scrapy implementiert das Crawlen und Analysieren von Artikeln über öffentliche WeChat-Konten Scrapy implementiert das Crawlen und Analysieren von Artikeln über öffentliche WeChat-Konten Jun 22, 2023 am 09:41 AM

Scrapy implementiert das Crawlen von Artikeln und die Analyse öffentlicher WeChat-Konten. WeChat ist in den letzten Jahren eine beliebte Social-Media-Anwendung, und die darin betriebenen öffentlichen Konten spielen ebenfalls eine sehr wichtige Rolle. Wie wir alle wissen, sind öffentliche WeChat-Konten ein Ozean an Informationen und Wissen, da jedes öffentliche Konto Artikel, grafische Nachrichten und andere Informationen veröffentlichen kann. Diese Informationen können in vielen Bereichen umfassend genutzt werden, beispielsweise in Medienberichten, in der akademischen Forschung usw. In diesem Artikel erfahren Sie, wie Sie das Scrapy-Framework zum Crawlen und Analysieren von WeChat-Artikeln zu öffentlichen Konten verwenden. Scr

Scrapy-Fallanalyse: So crawlen Sie Unternehmensinformationen auf LinkedIn Scrapy-Fallanalyse: So crawlen Sie Unternehmensinformationen auf LinkedIn Jun 23, 2023 am 10:04 AM

Scrapy ist ein Python-basiertes Crawler-Framework, mit dem schnell und einfach relevante Informationen im Internet abgerufen werden können. In diesem Artikel analysieren wir anhand eines Scrapy-Falls im Detail, wie Unternehmensinformationen auf LinkedIn gecrawlt werden. Bestimmen Sie die Ziel-URL. Zunächst müssen wir klarstellen, dass unser Ziel die Unternehmensinformationen auf LinkedIn sind. Daher müssen wir die URL der LinkedIn-Unternehmensinformationsseite finden. Öffnen Sie die LinkedIn-Website, geben Sie den Firmennamen in das Suchfeld ein und

Scrapy-Implementierungsmethode für asynchrones Laden basierend auf Ajax Scrapy-Implementierungsmethode für asynchrones Laden basierend auf Ajax Jun 22, 2023 pm 11:09 PM

Scrapy ist ein Open-Source-Python-Crawler-Framework, das schnell und effizient Daten von Websites abrufen kann. Viele Websites verwenden jedoch die asynchrone Ladetechnologie von Ajax, was es Scrapy unmöglich macht, Daten direkt abzurufen. In diesem Artikel wird die Scrapy-Implementierungsmethode basierend auf dem asynchronen Laden von Ajax vorgestellt. 1. Ajax-Prinzip des asynchronen Ladens Ajax-Asynchronladen: Bei der herkömmlichen Seitenlademethode muss der Browser, nachdem er eine Anfrage an den Server gesendet hat, darauf warten, dass der Server eine Antwort zurückgibt und die gesamte Seite lädt, bevor er mit dem nächsten Schritt fortfährt.

Tipps zur Scrapy-Optimierung: So reduzieren Sie das Crawling doppelter URLs und verbessern die Effizienz Tipps zur Scrapy-Optimierung: So reduzieren Sie das Crawling doppelter URLs und verbessern die Effizienz Jun 22, 2023 pm 01:57 PM

Scrapy ist ein leistungsstarkes Python-Crawler-Framework, mit dem große Datenmengen aus dem Internet abgerufen werden können. Bei der Entwicklung von Scrapy stoßen wir jedoch häufig auf das Problem, doppelte URLs zu crawlen, was viel Zeit und Ressourcen verschwendet und die Effizienz beeinträchtigt. In diesem Artikel werden einige Scrapy-Optimierungstechniken vorgestellt, um das Crawlen doppelter URLs zu reduzieren und die Effizienz von Scrapy-Crawlern zu verbessern. 1. Verwenden Sie die Attribute „start_urls“ und „allowed_domains“ im Scrapy-Crawler

So öffnen Sie Nachrichten und interessante Inhalte unter Windows 10 So öffnen Sie Nachrichten und interessante Inhalte unter Windows 10 Jan 13, 2024 pm 05:54 PM

Diejenigen Benutzer, die das Betriebssystem Windows 10 lieben, müssen die Informations- und Interessenempfehlungsfunktion bemerkt haben, die in der unteren rechten Ecke ihres Desktops angezeigt wird. Diese Funktion zeigt Ihnen im richtigen Moment alle möglichen spannenden Nachrichten an. Einige Benutzer finden sie jedoch möglicherweise zu umständlich und deaktivieren sie, andere ziehen es vor, sie aktiviert zu lassen. In diesem Moment können Sie die folgenden detaillierten Schritte verwenden, um diese Einstellungen jederzeit und überall einfach anzupassen. So öffnen Sie Nachrichten und Interessen in win10 1. Drücken Sie zuerst win+R, geben Sie dann „winver“ ein und drücken Sie die Eingabetaste. Anschließend können Sie die Versionsinformationen Ihres Computers überprüfen, um zu bestätigen, ob es sich um die 21h1-Version handelt. 2. Klicken Sie mit der rechten Maustaste auf die Taskleiste und wählen Sie „Informationen und Interessen“ 3. Hier

Beispiel für das Scrapen von Instagram-Informationen mit PHP Beispiel für das Scrapen von Instagram-Informationen mit PHP Jun 13, 2023 pm 06:26 PM

Instagram ist heute mit Hunderten Millionen aktiven Nutzern eines der beliebtesten sozialen Medien. Benutzer laden Milliarden von Bildern und Videos hoch und diese Daten sind für viele Unternehmen und Einzelpersonen sehr wertvoll. Daher ist es in vielen Fällen notwendig, ein Programm zum automatischen Scrapen von Instagram-Daten zu verwenden. In diesem Artikel wird die Verwendung von PHP zum Erfassen von Instagram-Daten vorgestellt und Implementierungsbeispiele bereitgestellt. Installieren Sie die cURL-Erweiterung für PHP. cURL ist ein Tool, das in verschiedenen Bereichen verwendet wird

Verwendung von Selenium und PhantomJS im Scrapy-Crawler Verwendung von Selenium und PhantomJS im Scrapy-Crawler Jun 22, 2023 pm 06:03 PM

Verwendung von Selenium und PhantomJS in Scrapy-Crawlern Scrapy ist ein hervorragendes Webcrawler-Framework unter Python und wird häufig bei der Datenerfassung und -verarbeitung in verschiedenen Bereichen eingesetzt. Bei der Implementierung des Crawlers ist es manchmal erforderlich, Browservorgänge zu simulieren, um die von bestimmten Websites präsentierten Inhalte abzurufen. In diesem Fall werden Selenium und PhantomJS benötigt. Selenium simuliert menschliche Vorgänge im Browser und ermöglicht uns so die Automatisierung von Webanwendungstests

Ausführlicher Einsatz von Scrapy: Wie crawlt man HTML-, XML- und JSON-Daten? Ausführlicher Einsatz von Scrapy: Wie crawlt man HTML-, XML- und JSON-Daten? Jun 22, 2023 pm 05:58 PM

Scrapy ist ein leistungsstarkes Python-Crawler-Framework, mit dem wir schnell und flexibel Daten im Internet abrufen können. Beim eigentlichen Crawling-Prozess stoßen wir häufig auf verschiedene Datenformate wie HTML, XML und JSON. In diesem Artikel stellen wir vor, wie man Scrapy zum Crawlen dieser drei Datenformate verwendet. 1. HTML-Daten crawlen und ein Scrapy-Projekt erstellen. Zuerst müssen wir ein Scrapy-Projekt erstellen. Öffnen Sie die Befehlszeile und geben Sie den folgenden Befehl ein: scrapys

See all articles