Rumah > Artikel > pembangunan bahagian belakang > Gunakan perangkak Scrapy untuk menangkap data kertas dalam bidang Pembelajaran Dalam
Pembelajaran mendalam kini merupakan salah satu hala tuju penyelidikan yang paling popular dan termaju dalam bidang kecerdasan buatan. Bagi sarjana dan pengamal yang terlibat dalam penyelidikan berkaitan, mendapatkan set data adalah prasyarat penting untuk menjalankan penyelidikan yang mendalam. Walau bagaimanapun, kebanyakan kertas penyelidikan Pembelajaran Dalam berkualiti tinggi diterbitkan melalui persidangan akademik antarabangsa terkemuka (seperti NeurIPS, ICLR, ICML, dll.), dan sukar untuk mendapatkan kertas kerja ini. Oleh itu, artikel ini akan memperkenalkan cara menggunakan teknologi perangkak Scrapy untuk merangkak data kertas dalam bidang Pembelajaran Dalam.
Pertama, kita perlu menentukan tapak web sasaran untuk dirangkak. Pada masa ini, tapak web yang lebih popular yang mengurus kertas Pembelajaran Dalam termasuk arXiv dan OpenReview. Dalam artikel ini, kami memilih untuk merangkak data arXiv. arXiv ialah tapak web yang menguruskan kertas saintifik, termasuk kertas kerja dalam banyak bidang, termasuk kertas kerja dalam bidang Pembelajaran Dalam. Pada masa yang sama, tapak web arXiv juga menyediakan antara muka API yang mudah, membolehkan program perangkak kami mendapatkan data kertas dengan mudah.
Seterusnya, kita boleh mula menulis program perangkak Scrapy. Mula-mula, masukkan arahan berikut dalam terminal untuk mencipta projek Scrapy:
scrapy startproject deep_learning_papers
Selepas penciptaan, masukkan direktori projek dan buat Spider:
cd deep_learning_papers scrapy genspider arXiv_spider arxiv.org
Di sini kami menamakan Spider "arXiv_spider", Dan nyatakan tapak web merangkak sebagai arxiv.org. Selepas penciptaan, buka fail arXiv_spider.py, kita boleh melihat kod berikut:
import scrapy class ArxivSpiderSpider(scrapy.Spider): name = 'arXiv_spider' allowed_domains = ['arxiv.org'] start_urls = ['http://arxiv.org/'] def parse(self, response): pass
Ini adalah templat Spider yang paling mudah. Kita perlu menulis kaedah parse sebagai fungsi untuk menangkap maklumat kertas. Memandangkan maklumat kertas diperoleh melalui antara muka API, kami perlu menghantar permintaan GET. Kita boleh menggunakan modul permintaan dalam Python untuk menghantar permintaan. Di sini kami menulis fungsi untuk menghantar permintaan:
import requests def get_papers_data(start, max_results): url = 'http://export.arxiv.org/api/query?search_query=all:deep+learning&start=' + str(start) + '&max_results=' + str(max_results) headers = {'Content-Type': 'application/json'} response = requests.get(url, headers=headers) return response.content
Fungsi get_papers_data menerima dua parameter, iaitu kedudukan permulaan dan nombor maksimum. Kami menghantar "all:deep+learning" kepada parameter search_query supaya kami boleh mendapatkan semua maklumat kertas dalam bidang Pembelajaran Dalam. Selepas menghantar permintaan GET menggunakan permintaan, kami boleh mendapatkan data daripada response.content.
Dalam kaedah parse, kami menghuraikan data yang dikembalikan. Kita boleh menggunakan ungkapan XPath untuk mendapatkan kandungan dengan cepat. Kod khusus adalah seperti berikut:
def parse(self, response): for i in range(0, 50000, 100): papers = get_papers_data(i, 100) xml = etree.XML(papers) for element in xml.iter(): if element.tag == 'title': title = element.text elif element.tag == 'name': name = element.text elif element.tag == 'abstract': abstract = element.text yield {'title': title, 'name': name, 'abstract': abstract}
Di sini kami menggunakan operasi gelung sehingga 50,000 kali, bermula dari 0 dan meningkat sebanyak 100 setiap kali sehingga maklumat semua kertas Deep Learning diperolehi. Kemudian, kami menggunakan etree.XML untuk menghuraikan data yang diperoleh ke dalam format XML, dan kemudian membaca setiap elemen satu demi satu. Apabila teg elemen ialah 'tajuk', 'nama' atau 'abstrak', kami menetapkan kandungan elemen kepada pembolehubah yang sepadan, dan akhirnya menggunakan hasil untuk mengembalikan hasil penghuraian.
Akhir sekali, kita perlu memulakan program perangkak:
scrapy crawl arXiv_spider -o deep_learning_papers.csv
Parameter "-o" digunakan di sini untuk menentukan fail output, yang lalai kepada format JSON. Di sini kami memilih format CSV dan fail output dinamakan "deep_learning_papers.csv".
Melalui teknologi Scrapy crawler, kita boleh mendapatkan maklumat kertas dengan mudah dalam bidang Deep Learning. Dengan menggabungkan teknologi pemprosesan data lain, kami boleh menjalankan penyelidikan dan analisis yang lebih mendalam tentang data ini, sekali gus menggalakkan pembangunan bidang Pembelajaran Dalam.
Atas ialah kandungan terperinci Gunakan perangkak Scrapy untuk menangkap data kertas dalam bidang Pembelajaran Dalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!