2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Web クローラーは、Web コンテンツを自動的に取得するために使用されるプログラムです。ユーザーが Web ページを閲覧するプロセスをシミュレートし、HTTP リクエストを送信して Web ページのソース コードを取得し、解析および抽出テクノロジを使用して必要なデータを取得します。
クローラーは、URL、リクエスト メソッド (GET または POST など)、リクエスト ヘッダー (Headers) などを含む HTTP リクエストをターゲット Web サイトに送信します。サーバーはリクエストを受信すると、ステータス コード、レスポンス ヘッダー、およびレスポンス本文 (Web ページのコンテンツ) を含む HTTP レスポンスを返します。
requests
そしてaiohttp
、HTTP リクエストの送信に使用されます。BeautifulSoup
、lxml
そしてPyQuery
、Web ページのコンテンツを解析するために使用されます。pandas
そしてSQLite
、クロールされたデータを保存するために使用されます。asyncio
そしてaiohttp
、非同期クローラーを実装し、クロール効率を向上させるために使用されます。次に、Python クローラーの 7 つの小さなケースを使用して、Python クローラーの基本知識をよりよく学び、理解できるようにします。以下は、各ケースの概要とソース コードです。
このケースでは、BeautifulSoup
ライブラリは、トップ 250 の Douban 映画から映画のタイトル、評価、レビュアーの数などの情報をクロールし、この情報を 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):
-