Teknologian jakaminen

Pythonin indeksointirobotin periaatteet ja 3 pientä tapausta (lähdekoodi)

2024-07-11

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

1. Matelijaperiaate

Verkkoindeksointirobotti on ohjelma, jota käytetään verkkosisällön automaattiseen noutamiseen. Se simuloi käyttäjien Web-sivujen selaamista, hankkii verkkosivujen lähdekoodin lähettämällä HTTP-pyyntöjä ja käyttää jäsennys- ja purkutekniikkaa tarvittavien tietojen hankkimiseen.

1. HTTP-pyyntö- ja vastausprosessi

Indeksointirobotti lähettää HTTP-pyynnön kohdesivustolle. Pyyntö sisältää URL-osoitteen, pyyntömenetelmän (kuten GET tai POST), pyyntöotsikot (Headers) jne. Kun palvelin on vastaanottanut pyynnön, se palauttaa HTTP-vastauksen, joka sisältää tilakoodin, vastauksen otsikon ja vastauksen rungon (verkkosivun sisällön).

2. Yleisesti käytetyt indeksointiteknologiat

  • pyydä kirjastoa:Esimerkiksirequestsjaaiohttp, jota käytetään HTTP-pyyntöjen lähettämiseen.
  • Jäsennetään kirjastoa:EsimerkiksiBeautifulSouplxmljaPyQuery, jota käytetään verkkosivun sisällön jäsentämiseen.
  • arkisto:EsimerkiksipandasjaSQLite, jota käytetään indeksoitujen tietojen tallentamiseen.
  • Async kirjasto:Esimerkiksiasynciojaaiohttp, jota käytetään asynkronisten indeksointirobottien toteuttamiseen ja indeksoinnin tehokkuuden parantamiseen.

2. Python-indeksointiroboteille yleisesti käytetyt kirjastot

1. Pyydä kirjastoa

  • pyynnöt: Yksinkertainen ja tehokas HTTP-kirjasto, joka tukee HTTP-yhteyden pysyvyyttä ja yhteyden yhdistämistä, SSL-varmenteen vahvistusta, evästeitä jne.
  • aiohttp: Asynkroninen HTTP-kirjasto, joka perustuu asyncioon, sopii korkean samanaikaisuuden indeksointirobotin skenaarioihin.

2. Jäsennetään kirjastoa

  • Kaunis keitto: Kirjasto HTML:n ja XML:n jäsentämiseen, helppokäyttöinen ja tukee useita jäsentimiä.
  • lxml: Tehokas XML- ja HTML-jäsennyskirjasto, joka tukee XPath- ja CSS-valitsimia.
  • PyQuery: jQueryn Python-versio, jolla on samanlainen syntaksi kuin jQuery ja helppokäyttöinen.

3. Arkisto

  • pandat: Tehokas tietojen analysointikirjasto, joka tarjoaa tietorakenteita ja tietojen analysointityökaluja ja tukee useita tiedostomuotoja.
  • SQLite: Kevyt tietokanta, joka tukee SQL-kyselyitä ja sopii pieniin indeksointiprojekteihin.

Seuraavaksi käytämme 7 pientä Python-indeksointirobotin tapausta auttaaksemme sinua oppimaan ja ymmärtämään Python-indeksointirobottien perustiedot. Seuraava on johdanto ja lähdekoodi jokaiselle tapaukselle:

Tapaus 1: Indeksoi 250 parasta Douban-elokuvaa

Tämä tapaus käyttääBeautifulSoupKirjasto indeksoi 250 suosituimman Douban-elokuvan tiedot, kuten elokuvien nimet, luokitukset ja arvioijien lukumäärän, ja tallentaa nämä tiedot CSV-tiedostoon.

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