Technologieaustausch

Python-Crawler-Prinzipien und 3 kleine Fälle (Quellcode)

2024-07-11

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

1. Reptilienprinzip

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.

1. HTTP-Anfrage- und Antwortprozess

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.

2. Häufig verwendete Crawler-Technologien

  • Bibliothek anfordern:Zum BeispielrequestsUndaiohttp, wird zum Senden von HTTP-Anfragen verwendet.
  • Parsing-Bibliothek:Zum BeispielBeautifulSouplxmlUndPyQuery, wird zum Parsen von Webseiteninhalten verwendet.
  • Repository:Zum BeispielpandasUndSQLite, wird zum Speichern gecrawlter Daten verwendet.
  • Asynchrone Bibliothek:Zum BeispielasyncioUndaiohttpWird zur Implementierung asynchroner Crawler und zur Verbesserung der Crawling-Effizienz verwendet.

2. Häufig verwendete Bibliotheken für Python-Crawler

1. Bibliothek anfordern

  • Anfragen: Eine einfache und leistungsstarke HTTP-Bibliothek, die HTTP-Verbindungspersistenz und Verbindungspooling, SSL-Zertifikatsüberprüfung, Cookies usw. unterstützt.
  • aiohttp: Eine asynchrone HTTP-Bibliothek basierend auf Asyncio, geeignet für Crawler-Szenarien mit hoher Parallelität.

2. Parsing-Bibliothek

  • Schöne Suppe: Eine Bibliothek zum Parsen von HTML und XML, einfach zu verwenden und unterstützt mehrere Parser.
  • lxml: Eine effiziente XML- und HTML-Parsing-Bibliothek, die XPath- und CSS-Selektoren unterstützt.
  • PyQuery: Eine Python-Version von jQuery mit ähnlicher Syntax wie jQuery und einfach zu verwenden.

3. Repository

  • Pandas: Eine leistungsstarke Datenanalysebibliothek, die Datenstrukturen und Datenanalysetools bereitstellt und mehrere Dateiformate unterstützt.
  • SQLite: Eine schlanke Datenbank, die SQL-Abfragen unterstützt und für kleine Crawler-Projekte geeignet ist.

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:

Fall 1: Crawlen Sie die 250 besten Douban-Filme

Dieser Fall verwendetBeautifulSoupDie 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.

  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) '