Compartilhamento de tecnologia

Princípios do rastreador Python e 3 pequenos casos (código-fonte)

2024-07-11

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

1. Princípio do Réptil

Um rastreador da web é um programa usado para recuperar automaticamente o conteúdo da web. Ele simula o processo de navegação dos usuários nas páginas da web, obtém o código-fonte das páginas da web enviando solicitações HTTP e usa tecnologia de análise e extração para obter os dados necessários.

1. Processo de solicitação e resposta HTTP

O rastreador envia uma solicitação HTTP para o site de destino. A solicitação inclui o URL, o método de solicitação (como GET ou POST), cabeçalhos de solicitação (Headers), etc. Depois que o servidor receber a solicitação, ele retornará uma resposta HTTP, que contém o código de status, o cabeçalho da resposta e o corpo da resposta (conteúdo da página da web).

2. Tecnologias rastreadoras comumente usadas

  • solicitar biblioteca:Por exemplorequestseaiohttp, usado para enviar solicitações HTTP.
  • Biblioteca de análise:Por exemploBeautifulSouplxmlePyQuery, usado para analisar o conteúdo da página da web.
  • repositório:Por exemplopandaseSQLite, usado para armazenar dados rastreados.
  • Biblioteca assíncrona:Por exemploasyncioeaiohttp, usado para implementar rastreadores assíncronos e melhorar a eficiência do rastreamento.

2. Bibliotecas comumente usadas para rastreadores Python

1. Solicitar biblioteca

  • solicitações de: Uma biblioteca HTTP simples e poderosa que suporta persistência de conexão HTTP e pool de conexões, verificação de certificado SSL, cookies, etc.
  • aiohttp: uma biblioteca HTTP assíncrona baseada em asyncio, adequada para cenários de rastreadores de alta simultaneidade.

2. Biblioteca de análise

  • SopaBela: Uma biblioteca para análise de HTML e XML, fácil de usar e com suporte a vários analisadores.
  • lxml: uma biblioteca eficiente de análise de XML e HTML que oferece suporte a seletores XPath e CSS.
  • PyQuery: uma versão Python do jQuery com sintaxe semelhante à do jQuery e fácil de usar.

3. Repositório

  • pandas: uma poderosa biblioteca de análise de dados que fornece estruturas e ferramentas de análise de dados e oferece suporte a vários formatos de arquivo.
  • SQLite: um banco de dados leve que oferece suporte a consultas SQL e é adequado para pequenos projetos de rastreadores.

A seguir, usaremos 7 pequenos casos de rastreadores Python para ajudá-lo a aprender e compreender melhor o conhecimento básico dos rastreadores Python. A seguir está uma introdução e código-fonte para cada caso:

Caso 1: rastreie os 250 melhores filmes de Douban

Este caso usaBeautifulSoupA biblioteca rastreia informações como títulos de filmes, classificações e número de críticos dos 250 melhores filmes de Douban e salva essas informações em um arquivo CSV.

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