Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amalan perangkak buruk: Bagaimana untuk merangkak data pangkalan data dokumen Akademi Sains Sosial China?

Amalan perangkak buruk: Bagaimana untuk merangkak data pangkalan data dokumen Akademi Sains Sosial China?

王林
王林asal
2023-06-22 08:36:061359semak imbas

Dengan perkembangan Internet, pendigitalan pelbagai maklumat telah menjadi trend, jadi jumlah data yang besar di laman web menjadi semakin penting. Merangkak data boleh menjadikan analisis dan pemprosesan lebih mudah. Rangka kerja scrapy ialah salah satu alat perangkak yang biasa digunakan Artikel ini akan memperkenalkan cara merangkak data pangkalan data dokumen Akademi Sains Sosial China melalui perangkak yang buruk.

1. Pasang scrapy

Scrapy ialah rangka kerja perangkak web sumber terbuka berdasarkan python, yang boleh digunakan untuk merangkak tapak web dan mengekstrak data. Sebelum kita mula, kita perlu memasang scrapy terlebih dahulu. Arahan pemasangan adalah seperti berikut:

pip install scrapy

2. Tulis kod crawler

Seterusnya, kita perlu membuat projek scrapy dan tulis kod crawler. Mula-mula, gunakan terminal untuk mencipta projek scrapy baharu:

scrapy startproject cssrc

Kemudian, masukkan direktori projek dan cipta labah-labah baharu:

cd cssrc
scrapy genspider cssrc_spider cssrc.ac.cn

Dalam fail labah-labah, kita perlu menetapkan beberapa parameter. Khususnya, kami perlu menetapkan parameter start_urls untuk mentakrifkan URL yang ingin kami rangkak dan fungsi parse untuk memproses data respons tapak web. Persediaan adalah seperti berikut:

# -*- 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

Dengan persediaan asas, kita perlu menulis kod untuk mengekstrak data daripada tapak web. Secara khusus, kita perlu mencari lokasi data sasaran dan mengekstraknya melalui kod. Dalam contoh ini, kita perlu mencari halaman khusus perpustakaan kesusasteraan dan mengekstrak data yang sepadan. Kodnya adalah seperti berikut:

# -*- 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 Jalankan perangkak

Selepas menulis kod, kita boleh menggunakan arahan untuk menjalankan perangkak dan mendapatkan data. Secara khusus, kita boleh menggunakan arahan berikut untuk menjalankan program scrapy:

scrapy crawl cssrc_spider -o cssrc.json

di mana, cssrc_spider ialah nama labah-labah yang kami tetapkan sebelum ini dan cssrc.json ialah nama fail data yang kami keluarkan. Selepas menjalankan arahan, program akan menjalankan dan mengeluarkan data secara automatik.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan rangka kerja buruk untuk merangkak data pangkalan data dokumen Akademi Sains Sosial China. Melalui artikel ini, kita boleh memahami prinsip asas perangkak dan cara menggunakan rangka kerja scrapy untuk merangkak. Pada masa yang sama, kami juga mempelajari cara mengekstrak data melalui xpath, dan menggunakan ungkapan biasa dan teknik pemprosesan pengekodan untuk menyelesaikan masalah seperti aksara Cina yang kacau. Saya harap artikel ini dapat membantu anda dan mempunyai nilai rujukan tertentu untuk pelaksanaan perangkak di tapak web lain.

Atas ialah kandungan terperinci Amalan perangkak buruk: Bagaimana untuk merangkak data pangkalan data dokumen Akademi Sains Sosial China?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn