Обмен технологиями

Принципы сканера Python и 3 небольших случая (исходный код)

2024-07-11

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

1. Принцип рептилий

Веб-сканер — это программа, используемая для автоматического получения веб-контента. Он имитирует процесс просмотра пользователями веб-страниц, получает исходный код веб-страниц путем отправки HTTP-запросов и использует технологию синтаксического анализа и извлечения для получения необходимых данных.

1. Процесс HTTP-запроса и ответа

Сканер отправляет HTTP-запрос на целевой веб-сайт. Запрос включает URL-адрес, метод запроса (например, GET или POST), заголовки запроса (заголовки) и т. д. После того, как сервер получит запрос, он вернет HTTP-ответ, который содержит код состояния, заголовок ответа и тело ответа (содержимое веб-страницы).

2. Распространенные краулерные технологии

  • запросить библиотеку:Напримерrequestsиaiohttp, используемый для отправки HTTP-запросов.
  • Библиотека синтаксического анализа:НапримерBeautifulSouplxmlиPyQuery, используемый для анализа содержимого веб-страницы.
  • репозиторий:НапримерpandasиSQLite, используемый для хранения просканированных данных.
  • Асинхронная библиотека:Напримерasyncioиaiohttp, используемый для реализации асинхронных сканеров и повышения эффективности сканирования.

2. Часто используемые библиотеки для сканеров Python

1. Запросить библиотеку

  • Запросы: Простая и мощная библиотека HTTP, которая поддерживает сохранение HTTP-соединений и пул соединений, проверку SSL-сертификатов, файлы cookie и т. д.
  • aiohttp: асинхронная библиотека HTTP, основанная на asyncio, подходящая для сценариев сканирования с высоким уровнем параллелизма.

2. Библиотека разбора

  • BeautifulSoup: библиотека для анализа HTML и XML, проста в использовании и поддерживает несколько парсеров.
  • lxml: эффективная библиотека синтаксического анализа XML и HTML, поддерживающая селекторы XPath и CSS.
  • PyQuery: версия jQuery для Python с синтаксисом, аналогичным jQuery, и простая в использовании.

3. Репозиторий

  • панды: мощная библиотека анализа данных, которая предоставляет структуры данных и инструменты анализа данных и поддерживает несколько форматов файлов.
  • SQLite: облегченная база данных, поддерживающая запросы SQL и подходящая для небольших проектов сканирования.

Далее мы будем использовать 7 небольших примеров сканеров Python, чтобы помочь вам лучше изучить и понять базовые знания о сканерах Python. Ниже приводится введение и исходный код для каждого случая:

Случай 1. Просмотрите 250 лучших фильмов Дубана.

В этом случае используетсяBeautifulSoupБиблиотека сканирует такую ​​информацию, как названия фильмов, рейтинги и количество рецензентов из 250 лучших фильмов Дубана, и сохраняет эту информацию в файл 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) '