Heim  >  Artikel  >  Backend-Entwicklung  >  Scrapy-Crawler-Praxis: Wie crawlt man die Dokumentdatenbankdaten der Chinesischen Akademie der Sozialwissenschaften?

Scrapy-Crawler-Praxis: Wie crawlt man die Dokumentdatenbankdaten der Chinesischen Akademie der Sozialwissenschaften?

王林
王林Original
2023-06-22 08:36:061268Durchsuche

Mit der Entwicklung des Internets ist die Digitalisierung verschiedener Informationen zu einem Trend geworden, sodass die große Datenmenge auf der Website immer wichtiger wird. Das Crawlen der Daten kann die Analyse und Verarbeitung komfortabler machen. Das Scrapy-Framework ist eines der am häufigsten verwendeten Crawler-Tools. In diesem Artikel wird erläutert, wie die Dokumentdatenbankdaten der Chinesischen Akademie der Sozialwissenschaften durch den Scrapy-Crawler gecrawlt werden.

1. Scrapy installieren

Scrapy ist ein Open-Source-Webcrawler-Framework auf Python-Basis, mit dem Websites gecrawlt und Daten extrahiert werden können. Bevor wir beginnen, müssen wir zuerst Scrapy installieren. Der Installationsbefehl lautet wie folgt:

pip install scrapy

2. Schreiben Sie den Crawler-Code

Als nächstes müssen wir ein Scrapy-Projekt erstellen und den Crawler-Code schreiben. Verwenden Sie zunächst das Terminal, um ein neues Scrapy-Projekt zu erstellen:

scrapy startproject cssrc

Geben Sie dann das Projektverzeichnis ein und erstellen Sie einen neuen Spider:

cd cssrc
scrapy genspider cssrc_spider cssrc.ac.cn

In der Spider-Datei müssen wir einige Parameter festlegen. Insbesondere müssen wir den Parameter start_urls festlegen, um die URLs zu definieren, die wir crawlen möchten, und die Analysefunktion festlegen, um die Antwortdaten der Website zu verarbeiten. Das Setup ist wie folgt:

# -*- coding: utf-8 -*-
import scrapy


class CssrcSpiderSpider(scrapy.Spider):
    name = 'cssrc_spider'
    allowed_domains = ['cssrc.ac.cn']
    start_urls = ['http://www.cssrc.ac.cn']

    def parse(self, response):
        pass

Nachdem das Grundsetup eingerichtet ist, müssen wir Code schreiben, um die Daten von der Website zu extrahieren. Konkret müssen wir herausfinden, wo sich die Zieldaten befinden, und sie durch Code extrahieren. In diesem Beispiel müssen wir die spezifische Seite der Literaturbibliothek finden und die entsprechenden Daten extrahieren. Der Code lautet wie folgt:

# -*- coding: utf-8 -*-
import scrapy


class CssrcSpiderSpider(scrapy.Spider):
    name = 'cssrc_spider'
    allowed_domains = ['cssrc.ac.cn']
    start_urls = ['http://www.cssrc.ac.cn']

    def parse(self, response):
        url = 'http://cssrc.ac.cn/report-v1/search.jsp'   # 文献库页面网址
        yield scrapy.Request(url, callback=self.parse_search)  # 发送请求

    def parse_search(self, response):
        # 发送post请求并得到响应
        yield scrapy.FormRequest.from_response(
            response,
            formdata={
                '__search_source__': 'T',   # 搜索类型为文献
                'fldsort': '0',   # 按相关度排序
                'Title': '',   # 标题
                'Author': '',   # 第一作者
                'Author2': '',   # 第二作者
                'Organ': '',   # 机构
                'Keyword': '',   # 关键词
                'Cls': '',   # 分类号
                '___action___': 'search'   # 请求类型为搜索
            },
            callback=self.parse_result   # 处理搜索结果的函数
        )

    def parse_result(self, response):
        # 通过xpath找到结果列表中的各个元素,并提取其中的文献信息
        result_list = response.xpath('//div[@class="info_content"]/div')
        for res in result_list:
            title = res.xpath('a[@class="title"]/text()').extract_first().strip()   # 文献标题
            authors = res.xpath('div[@class="yiyu"]/text()').extract_first().strip()   # 作者
            date = res.xpath('div[@class="date"]/text()').extract_first().strip()   # 出版日期
            url = res.xpath('a[@class="title"]/@href').extract_first()   # 文献详情页的url
            yield {
                'title': title,
                'authors': authors,
                'date': date,
                'url': url
            }

3. Führen Sie den Crawler aus

Nachdem wir den Code geschrieben haben, können wir den Befehl verwenden, um den Crawler auszuführen und die Daten abzurufen. Konkret können wir den folgenden Befehl verwenden, um das Scrapy-Programm auszuführen:

scrapy crawl cssrc_spider -o cssrc.json

wobei cssrc_spider为我们之前设置的spider名称,cssrc.json der Name der Datendatei ist, die wir ausgeben. Nach der Ausführung des Befehls wird das Programm automatisch ausgeführt und gibt Daten aus.

4. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie das Scrapy-Framework zum Crawlen der Dokumentdatenbankdaten der Chinesischen Akademie der Sozialwissenschaften verwenden. Durch diesen Artikel können wir die Grundprinzipien von Crawlern und die Verwendung des Scrapy-Frameworks zum Crawlen verstehen. Gleichzeitig haben wir auch gelernt, wie man Daten über xpath extrahiert und reguläre Ausdrücke und Codierungsverarbeitungsfähigkeiten verwendet, um Probleme wie verstümmelte chinesische Zeichen zu lösen. Ich hoffe, dass dieser Artikel Ihnen helfen kann und einen gewissen Referenzwert für die Implementierung von Crawlern auf anderen Websites hat.

Das obige ist der detaillierte Inhalt vonScrapy-Crawler-Praxis: Wie crawlt man die Dokumentdatenbankdaten der Chinesischen Akademie der Sozialwissenschaften?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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