Rumah > pembangunan bahagian belakang > Tutorial Python > Scrapy dalam tindakan: merangkak data berita Baidu

Scrapy dalam tindakan: merangkak data berita Baidu

WBOY
Lepaskan: 2023-06-23 08:50:09
asal
1804 orang telah melayarinya

Scrapy in action: Crawl Baidu news data

Dengan perkembangan Internet, cara utama orang ramai mendapatkan maklumat telah beralih daripada media tradisional kepada Internet, dan orang ramai semakin bergantung pada Internet untuk mendapatkan maklumat berita. Bagi penyelidik atau penganalisis, sejumlah besar data diperlukan untuk analisis dan penyelidikan. Oleh itu, artikel ini akan memperkenalkan cara menggunakan Scrapy untuk merangkak data berita Baidu.

Scrapy ialah rangka kerja perangkak Python sumber terbuka yang boleh merangkak data tapak web dengan cepat dan cekap. Scrapy menyediakan fungsi penghuraian dan rangkak halaman web yang berkuasa, serta kebolehskalaan yang baik dan tahap penyesuaian yang tinggi.

Langkah 1: Pasang Scrapy

Sebelum bermula, anda perlu memasang Scrapy dan beberapa perpustakaan lain. Pemasangan boleh diselesaikan melalui arahan berikut:

pip install scrapy
pip install requests
pip install bs4
Salin selepas log masuk

Langkah 2: Buat projek Scrapy

Buat projek Scrapy melalui arahan berikut:

scrapy startproject baiduNews
Salin selepas log masuk

Selepas arahan itu dilaksanakan, Folder bernama baiduNews akan dibuat dalam direktori semasa, yang mengandungi struktur awal projek Scrapy.

Langkah 3: Tulis Spider

Dalam Scrapy, Spider ialah pemproses yang digunakan untuk merangkak kandungan web. Kita perlu menulis Spider untuk mendapatkan data daripada laman web Berita Baidu. Pertama, kita perlu mencipta folder labah-labah dalam direktori akar projek dan mencipta fail Python di dalamnya agar sesuai dengan templat Spider.

import scrapy

class BaiduSpider(scrapy.Spider):
    name = "baidu"
    start_urls = [
        "http://news.baidu.com/"
    ]

    def parse(self, response):
        pass
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mengimport perpustakaan Scrapy dan mencipta kelas yang dipanggil BaiduSpider. Dalam kelas, kami mentakrifkan pembolehubah start_urls, iaitu senarai yang mengandungi URL Berita Baidu. Kaedah parse ialah fungsi teras untuk melaksanakan penangkapan data Di sini, kita hanya menentukan fungsi kosong. Sekarang, kita perlu menentukan templat untuk mendapatkan data berita.

import scrapy
from baiduNews.items import BaidunewsItem
from bs4 import BeautifulSoup

class BaiduSpider(scrapy.Spider):
    name = "baidu"
    start_urls = [
        "http://news.baidu.com/"
    ]

    def parse(self, response):
        soup = BeautifulSoup(response.body, "html.parser")

        results = soup.find_all("div", class_="hdline_article_tit")
        for res in results:
            item = BaidunewsItem()
            item["title"] = res.a.string.strip()
            item["url"] = res.a.get("href").strip()
            item["source"] = "百度新闻"
            yield item
Salin selepas log masuk

Dalam kod di atas, kami menemui semua elemen dengan kelas hdline_article_tit, yang merupakan tajuk utama Berita Baidu. Kami kemudian menggunakan BeautifulSoup untuk menghuraikan halaman dan mencipta objek kelas BaidunewsItem dalam gelung. Akhir sekali, kami mengembalikan data melalui pernyataan hasil.

Langkah 4: Tentukan Item

Dalam Scrapy, Item digunakan untuk mentakrifkan struktur data yang ditangkap. Kita perlu menentukan templat Item dalam fail items.py dalam projek.

import scrapy

class BaidunewsItem(scrapy.Item):
    title = scrapy.Field()
    url = scrapy.Field()
    source = scrapy.Field()
Salin selepas log masuk

Langkah 5: Mulakan Spider dan data output

Kita hanya perlu menjalankan arahan berikut untuk memulakan Spider dan data output:

scrapy crawl baidu -o baiduNews.csv
Salin selepas log masuk

Selepas arahan dilaksanakan, Cipta fail bernama baiduNews.csv dalam direktori akar projek, yang mengandungi semua data berita yang dirangkak.

Ringkasan

Dengan Scrapy, kami boleh mendapatkan data berita Baidu dengan cepat dan cekap serta menyimpannya secara setempat. Scrapy mempunyai kebolehskalaan yang baik dan menyokong output dalam berbilang format data. Artikel ini hanya memperkenalkan senario aplikasi mudah Scrapy, tetapi Scrapy masih mempunyai banyak fungsi berkuasa yang menunggu untuk kita terokai.

Atas ialah kandungan terperinci Scrapy dalam tindakan: merangkak data berita Baidu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan