2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ein Webcrawler ist ein Programm zum automatischen Abrufen von Webinhalten. Es simuliert den Prozess des Surfens von Webseiten durch Benutzer, ruft den Quellcode von Webseiten durch Senden von HTTP-Anfragen ab und verwendet Analyse- und Extraktionstechnologie, um die erforderlichen Daten zu erhalten.
Der Crawler sendet eine HTTP-Anfrage an die Zielwebsite. Die Anfrage enthält die URL, die Anfragemethode (wie GET oder POST), die Anfrageheader (Header) usw. Nachdem der Server die Anfrage empfangen hat, gibt er eine HTTP-Antwort zurück, die den Statuscode, den Antwortheader und den Antworttext (Webseiteninhalt) enthält.
requests
Undaiohttp
, wird zum Senden von HTTP-Anfragen verwendet.BeautifulSoup
、lxml
UndPyQuery
, wird zum Parsen von Webseiteninhalten verwendet.pandas
UndSQLite
, wird zum Speichern gecrawlter Daten verwendet.asyncio
Undaiohttp
Wird zur Implementierung asynchroner Crawler und zur Verbesserung der Crawling-Effizienz verwendet.Als Nächstes werden wir sieben kleine Fälle von Python-Crawlern verwenden, um Ihnen zu helfen, die Grundkenntnisse von Python-Crawlern besser zu erlernen und zu verstehen. Im Folgenden finden Sie eine Einführung und einen Quellcode für jeden Fall:
Dieser Fall verwendetBeautifulSoup
Die Bibliothek durchsucht Informationen wie Filmtitel, Bewertungen und die Anzahl der Rezensenten aus den Top 250 Douban-Filmen und speichert diese Informationen in einer CSV-Datei.
- 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):
-