Berbagi teknologi

Prinsip perayap Python dan 3 kasus kecil (kode sumber)

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Prinsip Reptil

Perayap web adalah program yang digunakan untuk mengambil konten web secara otomatis. Ini mensimulasikan proses pengguna menjelajahi halaman web, memperoleh kode sumber halaman web dengan mengirimkan permintaan HTTP, dan menggunakan teknologi parsing dan ekstraksi untuk mendapatkan data yang diperlukan.

1. Proses permintaan dan respons HTTP

Perayap mengirimkan permintaan HTTP ke situs web target. Permintaan tersebut mencakup URL, metode permintaan (seperti GET atau POST), header permintaan (Header), dll. Setelah server menerima permintaan, server akan mengembalikan respons HTTP, yang berisi kode status, header respons, dan isi respons (konten halaman web).

2. Teknologi perayap yang umum digunakan

  • perpustakaan permintaan:MisalnyarequestsDanaiohttp, digunakan untuk mengirim permintaan HTTP.
  • Mengurai perpustakaan:MisalnyaBeautifulSouplxmlDanPyQuery, digunakan untuk mengurai konten halaman web.
  • gudang:MisalnyapandasDanSQLite, digunakan untuk menyimpan data yang dirayapi.
  • Perpustakaan asinkron:MisalnyaasyncioDanaiohttp, digunakan untuk mengimplementasikan perayap asinkron dan meningkatkan efisiensi perayapan.

2. Pustaka yang umum digunakan untuk perayap Python

1. Minta perpustakaan

  • permintaan: Pustaka HTTP sederhana dan kuat yang mendukung persistensi koneksi HTTP dan pengumpulan koneksi, verifikasi sertifikat SSL, Cookie, dll.
  • aiohttp: Pustaka HTTP asinkron berdasarkan asyncio, cocok untuk skenario perayap konkurensi tinggi.

2. Mengurai perpustakaan

  • Sup Cantik: Perpustakaan untuk parsing HTML dan XML, mudah digunakan dan mendukung banyak parser.
  • Bahasa Inggris: lxml: Pustaka parsing XML dan HTML efisien yang mendukung pemilih XPath dan CSS.
  • Bahasa pemrograman PyQuery: jQuery versi Python dengan sintaksis yang mirip dengan jQuery dan mudah digunakan.

3. Gudang

  • Panda: Pustaka analisis data canggih yang menyediakan struktur data dan alat analisis data serta mendukung berbagai format file.
  • Bahasa SQLite: Basis data ringan yang mendukung kueri SQL dan cocok untuk proyek perayap kecil.

Selanjutnya, kami akan menggunakan 7 kasus kecil perayap Python untuk membantu Anda mempelajari dan memahami pengetahuan dasar perayap Python dengan lebih baik. Berikut ini adalah pendahuluan dan kode sumber untuk setiap kasus:

Kasus 1: Merayapi 250 film Douban teratas

Kasus ini menggunakanBeautifulSoupPerpustakaan merayapi informasi seperti judul film, peringkat, dan jumlah pengulas dari 250 film Douban Teratas, dan menyimpan informasi ini ke dalam file CSV.

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import csv
  4. # 请求URL
  5. url = 'https://movie.douban.com/top250'
  6. # 请求头部
  7. headers = {
  8. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
  9. }
  10. # 解析页面函数
  11. def parse_html(html):
  12. soup = BeautifulSoup(html, 'lxml')
  13. movie_list = soup.find('ol', class_='grid_view').find_all('li')
  14. for movie in movie_list:
  15. title = movie.find('div', class_='hd').find('span', class_='title').get_text()
  16. rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
  17. comment_num = movie.find('div', class_='star').find_all('span')[-1].get_text()
  18. writer.writerow([title, rating_num, comment_num])
  19. # 保存数据函数
  20. def save_data():
  21. f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
  22. global writer
  23. writer = csv.writer(f)
  24. writer.writerow(['电影名称', '评分', '评价人数'])
  25. for i in range(10):
  26. url = 'https://movie.douban.com/top250?start=' str(i * 25) '