Amalan mengaplikasi Scrapy pada analisis struktur laman web

PHPz
Lepaskan: 2023-06-22 09:36:48
asal
1179 orang telah melayarinya

Dengan populariti dan perkembangan Internet, semakin banyak tapak web menunjukkan tahap kerumitan dan kepelbagaian yang tinggi. Dalam konteks ini, analisis struktur tapak web amat penting kerana ia boleh membantu kami memahami dengan lebih baik struktur dalaman dan komposisi tapak web, dengan itu memberikan sokongan yang lebih komprehensif dan terperinci kepada pembangun yang berkaitan.

Scrapy ialah rangka kerja Python untuk merangkak tapak web dan mengekstrak data berstruktur. Ia berdasarkan rangka kerja berpintal dan mengendalikan permintaan secara tidak segerak. Menggunakan rangka kerja Scrapy untuk menganalisis struktur tapak web boleh membolehkan kami memahami struktur dan kandungan tapak web dengan lebih baik, serta membantu kami mengumpul dan memproses data dengan lebih baik.

Dalam artikel ini, kami akan memperkenalkan amalan mengaplikasikan analisis struktur laman web dalam rangka kerja Scrapy.

1. Pemasangan dan konfigurasi Scrapy

Mula-mula, kita perlu memasang Scrapy. Adalah disyorkan untuk menggunakan pip untuk pemasangan, iaitu, masukkan: pip install scrapy pada baris arahan.

Selepas pemasangan selesai, beberapa konfigurasi diperlukan. Ia terutamanya termasuk menyediakan Ejen Pengguna dan menyediakan saluran paip perangkak.

1. Tetapkan Ejen Pengguna

Dalam proses menulis perangkak, kita perlu memalsukan rentetan Ejen Pengguna untuk menjadikan perangkak kelihatan lebih seperti pelayar biasa dan bukannya perangkak. Kelebihan melakukan ini adalah untuk mengelakkan daripada disekat atau disekat oleh laman web.

Kaedah tetapan adalah untuk menambah kod berikut pada fail settings.py:

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome /58.0.3029.110 Safari/537.36'

2. Tetapkan saluran paip

talian paip ialah saluran paip untuk pemprosesan data dalam Scrapy. Dengan menghantar data yang diperolehi oleh perangkak ke saluran paip, data disimpan dan diproses dalam saluran paip. Dalam Scrapy, perangkak boleh mempunyai berbilang saluran paip dan saluran paip yang berbeza boleh melakukan operasi yang berbeza pada data.

Tambahkan kod berikut pada fail settings.py:

ITEM_PIPELINES = {

'scrapy_test.pipelines.MyPipeline': 300,  
Salin selepas log masuk

}

Antaranya, 300 mewakili keutamaan saluran paip . Dalam saluran paip yang digunakan oleh Scrapy secara lalai, keutamaan menyimpan data ke fail CSV adalah yang tertinggi, iaitu 500. Kami boleh menetapkan keutamaan saluran paip kami sendiri lebih rendah daripada 500 dan lebih tinggi daripada saluran paip lalai lain.

2. Penggunaan Scrapy

Selepas melengkapkan pemasangan dan konfigurasi Scrapy, kami kini boleh mula menulis perangkak kami. Dalam Scrapy, analisis struktur dan pengekstrakan data tapak web direalisasikan dengan menulis dua komponen asas: labah-labah dan item.

1. Tulis Labah-labah

Dalam Scrapy, perangkak ialah salah satu komponen asas. Dengan menulis kod perangkak, kami boleh mengawal akses perangkak dan proses rangkak untuk mencapai hasil yang diinginkan.

Dengan mencipta kelas Spider, mewarisi scrapy.Spider, dan kemudian melaksanakan tiga atribut dan kaedah nama, start_url dan parse dalam kelas, anda boleh menulis perangkak dengan mudah.

Coretan kod:

import scrapy

class MySpider(scrapy.Spider):

name = 'myspider'  
start_urls = ['http://www.example.com']   
Salin selepas log masuk

def parse(self, response):

rreee

Start_urls ialah URL yang Spider mula merangkak, dan parse ialah kaedah pemprosesan kandungan HTML yang diperoleh sebelum Spider melawat URL start_url.

2. Menulis Item

Item adalah satu lagi komponen asas Scrapy, fungsi utamanya adalah untuk pengekstrakan data dan pemprosesan berstruktur.

Dengan mentakrifkan kelas Item, sama seperti mentakrifkan medan dalam jadual, anda boleh mencapai pemprosesan data berstruktur.

Coretan kod:

import scrapy

class MyItem(scrapy.Item):

yield {'text': response.css('title::text').get()} 
Salin selepas log masuk

Kod di atas mentakrifkan kelas Item, termasuk tajuk dan pautan dua sifat. Setiap harta adalah objek scrapy.Field, yang mentakrifkan jenis data yang diperolehi. Selepas merangkak selesai, Scrapy akan menyimpan data ke dalam kamus Python Nama kunci sepadan dengan atribut yang disimpan dalam Item, dan nilai kunci sepadan dengan data yang diperoleh.

3. Analisis dan pemprosesan hasil

Selepas melengkapkan penulisan perangkak, kita boleh melihat hasil data yang diperolehi dengan menjalankan program perangkak.

Sekiranya kita perlu menyimpan data dalam pangkalan data, kita boleh memproses selanjutnya data yang diperolehi dan menyimpannya ke pangkalan data dengan menulis Item Pipeline.

Coretan kod:

import pymongo

kelas MyPipeline(objek):

title = scrapy.Field()   
link = scrapy.Field() 
Salin selepas log masuk

def process_item(self, item, spider):

rreee

Dalam kod di atas, kami menyambung ke pangkalan data MongoDB melalui perpustakaan pymongo dan menyimpan data yang diperoleh ke pangkalan data.

Ringkasan

Scrapy ialah rangka kerja perangkak yang berkuasa berdasarkan bahasa Python, yang menyediakan penyelesaian rangkak dan pemprosesan data yang lengkap. Dalam amalan, Scrapy boleh melaksanakan analisis struktur dan pengekstrakan data tapak web dengan mudah, membolehkan kami memahami dengan lebih baik struktur dalaman dan komposisi tapak web, dengan itu memberikan sokongan yang lebih besar kepada pembangun yang berkaitan.

Atas ialah kandungan terperinci Amalan mengaplikasi Scrapy pada analisis struktur laman web. 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