2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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.
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).
requests
Danaiohttp
, digunakan untuk mengirim permintaan HTTP.BeautifulSoup
、lxml
DanPyQuery
, digunakan untuk mengurai konten halaman web.pandas
DanSQLite
, digunakan untuk menyimpan data yang dirayapi.asyncio
Danaiohttp
, digunakan untuk mengimplementasikan perayap asinkron dan meningkatkan efisiensi perayapan.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 ini menggunakanBeautifulSoup
Perpustakaan merayapi informasi seperti judul film, peringkat, dan jumlah pengulas dari 250 film Douban Teratas, dan menyimpan informasi ini ke dalam file CSV.
- import requests
- from bs4 import BeautifulSoup
- import csv
-
- # 请求URL
- url = 'https://movie.douban.com/top250'
- # 请求头部
- headers = {
- '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'
- }
-
- # 解析页面函数
- def parse_html(html):
- soup = BeautifulSoup(html, 'lxml')
- movie_list = soup.find('ol', class_='grid_view').find_all('li')
- for movie in movie_list:
- title = movie.find('div', class_='hd').find('span', class_='title').get_text()
- rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
- comment_num = movie.find('div', class_='star').find_all('span')[-1].get_text()
- writer.writerow([title, rating_num, comment_num])
-
- # 保存数据函数
- def save_data():
- f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
- global writer
- writer = csv.writer(f)
- writer.writerow(['电影名称', '评分', '评价人数'])
- for i in range(10):
-