Índice
1. Princípio do rastreador web Python
2. Caso do rastreador da web Python
Etapa 1: analise a página da web
Prefácio
Com o desenvolvimento da Internet, a quantidade de informações na Internet tornou-se cada vez maior. A obtenção desses dados é uma tarefa importante para analistas e pesquisadores de dados. Python é uma linguagem de programação eficiente amplamente utilizada nas áreas de desenvolvimento web e análise de dados. Os rastreadores da web Python podem visitar sites automaticamente e extrair dados deles. Este artigo apresentará o princípio do rastreador da web Python e o uso de IP proxy, além de fornecer um exemplo.
1. Princípio do rastreador web Python
Python é uma linguagem de programação eficiente, popular na área de desenvolvimento web e análise de dados. Os excelentes módulos do Python o tornam mais adequado para processamento de dados em larga escala e programação de serviços da Web. Os rastreadores da Web são uma das ferramentas mais comumente usadas pelos desenvolvedores Python.
Um rastreador da web é um programa automatizado que pode simular o comportamento de um navegador humano e pesquisar e obter informações automaticamente na Internet. Os rastreadores da web Python geralmente incluem as seguintes etapas:
- Análise de URL: o rastreador da web Python precisa especificar o URL do site a ser rastreado. Ao acessar o link, o programa rastreador analisará automaticamente o conteúdo HTML da página da web, identificará os hiperlinks e descobrirá outros links para obter uma lista de sites que precisam ser rastreados.
- Download de página: o rastreador da web Python primeiro precisa iniciar uma solicitação HTTP. Assim que o servidor aceitar a solicitação HTTP, ele retornará a página que precisa ser renderizada pelo navegador na forma de código HTML. Os rastreadores da web Python precisam usar bibliotecas, como solicitações, urllib, etc., para iniciar solicitações HTTP e baixar dados da página.
- Análise de conteúdo: os rastreadores da web Python geralmente usam bibliotecas de análise para analisar dados. As bibliotecas de análise podem extrair tags, textos ou atributos específicos e convertê-los em tipos de dados Python, como listas ou dicionários. Beautiful Soup é uma das bibliotecas de análise mais populares em Python.
- Processamento de dados: os rastreadores da web Python precisam processar e analisar dados. As bibliotecas de análise de dados do Python, pandas e NumPy, fornecem várias ferramentas de processamento e análise. Os rastreadores podem usar essas ferramentas para limpar e processar dados.
O texto acima é o processo geral do rastreador da web Python. Abaixo, ilustraremos isso ainda mais com exemplos.
2. Caso do rastreador da web Python
Tomaremos a coleção de dados Top250 do filme Douban como exemplo para apresentar em detalhes o método de implementação do rastreador da web Python.
Etapa 1: analise a página da web
Antes de visitar qualquer página web, precisamos compreender a estrutura e os elementos dessa página web. Em Python, podemos usar a biblioteca de solicitações para acessar páginas da web e obter marcação HTML. Aqui está o código de exemplo:
import requests
url = 'https://movie.douban.com/top250'
response = requests.get(url)
html = response.text
print(html)
Depois de obter as tags HTML, podemos usar a biblioteca Beautiful Soup para analisar a página HTML. Ele fornece uma maneira conveniente de localizar e extrair dados de páginas HTML. Aqui está o código de exemplo:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
print(soup.prettify()) #输出格式化的 HTML 代码
Executando o código acima, podemos ver o código HTML embelezado no console.
Etapa 2: extrair dados
Depois de analisar a página web, precisamos extrair dados úteis. Em nosso exemplo, extrairemos informações como nome do filme, classificação, tipo de filme, diretor e atores do Douban Movie Top250.
# 获取标题信息
titles = [title.text for title in soup.select('div.hd a span')]
print(titles)
# 获取评分信息
scores = [score.text for score in soup.select('div.star span.rating_num')]
print(scores)
# 获取信息文本
lists = [list.text for list in soup.select('div.info div.bd p')]
print(lists)
# 处理信息文本
directors = []
actors = []
for list in lists:
temp_str = list.strip().split('\n')[0]
index = temp_str.find('导演')
if index != -1:
directors.append(temp_str[index + 3:])
actors.append(temp_str[:index - 1])
else:
directors.append('')
actors.append(temp_str)
print(directors)
print(actors)
Etapa 3: armazenar dados
Finalmente, precisamos armazenar os dados em um arquivo para posterior processamento e análise. Em Python, podemos usar a biblioteca Pandas para armazenar dados em um arquivo CSV.
import pandas as pd
data = {'电影名称': titles, '电影评分': scores, '导演': directors, '演员': actors}
df = pd.DataFrame(data)
print(df)
df.to_csv('douban_movies.csv', index=False)
3. Use IP proxy
Os rastreadores da Web Python geralmente precisam usar IPs de proxy para evitar o mecanismo anti-rastreador do site. Um IP proxy é um endereço IP em outro servidor que oculta nosso endereço IP e localização reais, contornando assim as restrições de acesso ao site. Em Python, podemos usar IP proxy para acessar o site e obter proteção de privacidade.
O uso do IP proxy pode ser conseguido adicionando alguns parâmetros. Por exemplo, podemos usar o parâmetro proxies na biblioteca de solicitações para especificar o IP do proxy:
proxies = {'http': 'http://user:<password>@<ip_address>:<port>',
'https': 'https://user:<password>@<ip_address>:<port>'}
response = requests.get(url, proxies=proxies)
No código acima, especificamos o IP do proxy para os protocolos HTTP e HTTPS. Onde user:password é o nome de usuário e a senha do IP do proxy, ip_address e port são o endereço IP e o número da porta do servidor proxy.
Também podemos usar uma estrutura scrapy para implementar o uso de proxy IP. A estrutura scrapy fornece vários métodos para definir e alternar IPs de proxy. Por exemplo, podemos usar o middleware do downloader no scrapy para especificar o IP do proxy, como selecionar aleatoriamente o IP do proxy:
import random
class RandomProxyMiddleware(object):
def __init__(self, proxy_list):
self.proxy_list = proxy_list
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings.getlist('PROXY_LIST'))
def process_request(self, request, spider):
proxy = random.choice(self.proxy_list)
request.meta['proxy'] = proxy
No código acima, implementamos um middleware chamado RandomProxyMiddleware, que seleciona aleatoriamente um IP proxy como proxy para a solicitação. A lista de IP do proxy pode ser configurada no arquivo de configurações do scrapy.
4. Resumo
O rastreador da web Python é uma ferramenta poderosa de coleta e análise de dados que pode extrair grandes quantidades de dados da Internet para diversas análises e mineração de dados. Neste artigo, apresentamos os princípios básicos e o uso do rastreador da web Python e fornecemos um exemplo de obtenção de informações de filmes dos 250 principais filmes de Douban. Também abordamos como usar IPs proxy para evitar mecanismos anti-rastreador de sites. Espero que este artigo seja útil para iniciantes no rastreamento da web em Python.