2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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.
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).
requests
eaiohttp
, usado para enviar solicitações HTTP.BeautifulSoup
、lxml
ePyQuery
, usado para analisar o conteúdo da página da web.pandas
eSQLite
, usado para armazenar dados rastreados.asyncio
eaiohttp
, usado para implementar rastreadores assíncronos e melhorar a eficiência do rastreamento.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:
Este caso usaBeautifulSoup
A 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.
- 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):
-