2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
जालक्रॉलरः स्वयमेव जालसामग्रीम् पुनः प्राप्तुं प्रयुक्तः कार्यक्रमः । एतत् उपयोक्तृणां जालपृष्ठानि ब्राउज् करणस्य प्रक्रियां अनुकरणं करोति, HTTP अनुरोधं प्रेषयित्वा जालपृष्ठानां स्रोतसङ्केतं प्राप्नोति, आवश्यकदत्तांशं प्राप्तुं पार्सिंग्-निष्कासन-प्रौद्योगिक्याः उपयोगं करोति
क्रॉलरः लक्ष्यजालस्थले HTTP अनुरोधं प्रेषयति अनुरोधे URL, अनुरोधविधिः (यथा GET अथवा POST), अनुरोधशीर्षकाणि (Headers) इत्यादयः सन्ति । सर्वरः अनुरोधं प्राप्तस्य अनन्तरं HTTP प्रतिक्रियां प्रत्यागमिष्यति, यस्मिन् स्थितिसङ्केतः, प्रतिक्रियाशीर्षकं, प्रतिक्रियाशरीरं (जालपृष्ठसामग्री) च सन्ति ।
requests
तथाaiohttp
, HTTP अनुरोधं प्रेषयितुं प्रयुक्तम् ।BeautifulSoup
、lxml
तथाPyQuery
, जालपृष्ठसामग्रीविश्लेषणार्थं प्रयुक्तम् ।pandas
तथाSQLite
, क्रॉल कृतदत्तांशस्य संग्रहणार्थं प्रयुक्तम् ।asyncio
तथाaiohttp
, अतुल्यकालिकक्रॉलर्-कार्यं कर्तुं क्रॉल-दक्षतायाः उन्नयनार्थं च उपयुज्यते ।तदनन्तरं वयं Python crawlers इत्यस्य 7 लघुप्रकरणानाम् उपयोगं करिष्यामः येन भवन्तः Python crawlers इत्यस्य मूलभूतज्ञानं अधिकतया ज्ञातुं अवगन्तुं च शक्नुवन्ति । प्रत्येकस्य प्रकरणस्य परिचयः स्रोतसङ्केतः च निम्नलिखितम् अस्ति ।
अयं प्रकरणः उपयुङ्क्तेBeautifulSoup
पुस्तकालयः Top 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):
-