Scrapy ialah rangka kerja perangkak Python yang berkuasa yang boleh memudahkan proses pembangunan dan penggunaan perangkak. Dalam aplikasi praktikal, kita selalunya perlu menggunakan Scrapy untuk memuat turun atau memuat naik fail dalam kelompok, seperti gambar, sumber audio atau video. Artikel ini akan memperkenalkan cara menggunakan Scrapy untuk melaksanakan fungsi ini.
Scrapy menyediakan berbilang cara untuk memuat turun fail dalam kelompok. Cara paling mudah ialah menggunakan ImagePipeline atau FilesPipeline terbina dalam. Kedua-dua saluran paip ini boleh mengekstrak imej atau pautan fail secara automatik daripada halaman HTML dan memuat turunnya ke cakera setempat.
Untuk menggunakan kedua-dua saluran paip ini, kami perlu mengkonfigurasinya dalam fail settings.py projek Scrapy. Contohnya, jika kami ingin memuat turun imej, kami boleh mengkonfigurasinya seperti berikut:
ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1} IMAGES_STORE = '/path/to/download/folder'
Di mana, ITEM_PIPELINES ialah senarai saluran paip dan kami menambah ImagesPipeline ke kedudukan pertama. IMAGES_STORE ialah laluan menyimpan fail yang dimuat turun.
Seterusnya, kita perlu menentukan jenis fail untuk dimuat turun dalam fail items.py perangkak. Untuk imej, ia boleh ditakrifkan seperti ini:
import scrapy class MyItem(scrapy.Item): name = scrapy.Field() image_urls = scrapy.Field() images = scrapy.Field()
Antaranya, nama ialah nama imej, image_urls ialah senarai pautan imej, dan imej ialah lokasi imej yang dimuat turun.
Dalam fail spider.py, kita perlu menambah pautan imej pada item dan meletakkan item itu ke dalam baris gilir saluran paip. Contohnya:
import scrapy from myproject.items import MyItem class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): item = MyItem() item['name'] = 'example' item['image_urls'] = ['http://example.com/image.jpg'] yield item
Dengan cara ini, apabila kita menjalankan Scrapy, imej akan dimuat turun secara automatik dari tapak web contoh dan disimpan ke folder yang ditentukan. Jika anda ingin memuat turun jenis fail lain, seperti PDF atau video, anda boleh menggunakan FilesPipeline Kaedah ini serupa dengan ImagePipeline Anda hanya perlu menggantikan ImagePipeline dengan FilesPipeline dalam fail settings.py dan tentukan jenis fail yang akan dimuat turun. dalam fail items.py , dan tambahkan pautan dan item yang sepadan dalam fail spider.py.
Selain memuat turun fail, Scrapy juga boleh membantu kami memuat naik fail secara berkelompok. Katakan kita perlu memuat naik fail dari cakera tempatan ke pelayan jauh, kita boleh menggunakan FormRequest yang disediakan oleh Scrapy.
Dalam fail spider.py, kami boleh menggunakan FormRequest untuk membina permintaan POST untuk menghantar fail tempatan ke pelayan sebagai data binari. Contohnya:
import scrapy class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['http://example.com'] def parse(self, response): with open('/path/to/local/file', 'rb') as f: data = f.read() yield scrapy.FormRequest('http://example.com/upload', formdata={'file': data}, callback=self.parse_result) def parse_result(self, response): # 处理上传结果
Dalam contoh di atas, kami membuka fail setempat, membaca kandungan fail dan menghantarnya ke pelayan sebagai data binari. Selepas menerima permintaan, pelayan menyimpan fail dalam direktori yang ditentukan dan mengembalikan hasil muat naik. Kami boleh memproses hasil muat naik dalam fungsi parse_result, seperti mencetak hasil muat naik, menyimpan hasil muat naik, dsb.
Ringkasan
Scrapy menyediakan berbilang cara untuk memuat turun atau memuat naik fail dalam kelompok. Untuk jenis fail yang paling biasa, seperti gambar dan dokumen, anda boleh menggunakan ImagePipeline atau FilesPipeline terbina dalam untuk memuat turun secara automatik ke cakera setempat anda. Untuk jenis fail lain, anda boleh menggunakan FormRequest untuk membina permintaan POST dan menghantar fail setempat ke pelayan sebagai data binari. Menggunakan Scrapy untuk memuat turun atau memuat naik fail dalam kelompok boleh memudahkan beban kerja anda dan meningkatkan kecekapan.
Atas ialah kandungan terperinci Bagaimana untuk memuat turun atau memuat naik fail secara berkumpulan menggunakan Scrapy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!