Compartilhamento de tecnologia

Rastreador e saída Python

2024-07-12

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

1. Rastreador Python e exemplo de saída

Abaixo está um exemplo de um rastreador da web simples escrito em Python que rastreará uma determinada página da web (por exemplo, digamoshttps://example.com , mas observe que, no uso real, precisamos substituí-lo pelo título (Título) de um site real que pode ser rastreado) e imprimi-lo. Como acessar e copiar diretamente sites reais pode envolver questões legais e de direitos autorais, fornecemos apenas um exemplo conceitual aqui.

Para realizar esta tarefa usaremos o Pythonrequestsbiblioteca para enviar solicitações HTTP e usarBeautifulSoup Biblioteca para analisar conteúdo HTML. Se ainda não instalamos essas bibliotecas, podemos instalá-las via pip:

  1. bash复制代码
  2. pip install requests beautifulsoup4

Aqui está o exemplo de código completo:

  1. # 导入必要的库
  2. import requests
  3. from bs4 import BeautifulSoup
  4. def fetch_website_title(url):
  5. """
  6. 抓取指定网页的标题并返回。
  7. 参数:
  8. url (str): 需要抓取的网页的URL。
  9. 返回:
  10. str: 网页的标题,如果抓取失败则返回None。
  11. """
  12. try:
  13. # 发送HTTP GET请求
  14. response = requests.get(url)
  15. # 检查请求是否成功
  16. if response.status_code == 200:
  17. # 使用BeautifulSoup解析HTML内容
  18. soup = BeautifulSoup(response.text, 'html.parser')
  19. # 查找网页的<title>标签
  20. title_tag = soup.find('title')
  21. # 如果找到<title>标签,则返回其内容
  22. if title_tag:
  23. return title_tag.get_text(strip=True)
  24. else:
  25. return "No title found."
  26. else:
  27. return f"Failed to retrieve the webpage. Status code: {response.status_code}"
  28. except requests.RequestException as e:
  29. return f"Error fetching the webpage: {e}"
  30. # 示例URL(请替换为我们要抓取的网页的URL)
  31. url = 'https://example.com'
  32. # 调用函数并打印结果
  33. title = fetch_website_title(url)
  34. print(f"The title of the webpage is: {title}")

Perceber

(1) Devido ahttps://example.comé um espaço reservado, por exemplo, então precisamos substituí-lo por um URL de página da web válido que permita o rastreamento durante a execução.

(2) O rastreador deve cumprir os requisitos do site de destino ao executarrobots.txtO documento estipula o respeito aos direitos autorais e às restrições de acesso do site.

(3) Alguns sites podem ter mecanismos anti-rastreador configurados, como verificação de agente de usuário, limite de frequência, etc. Poderemos precisar modificar nossos cabeçalhos de solicitação (comoUser-Agent) ou use métodos como proxies para contornar essas restrições.

(4) Para estruturas de páginas web mais complexas ou requisitos de captura de dados mais avançados, talvez seja necessário aprender mais sobre HTML, seletores CSS, XPath e solicitações de rede.

2. Exemplos de código mais detalhados

Abaixo está um exemplo de código do rastreador Python mais detalhado, desta vez usareirequestsbiblioteca para enviar solicitações HTTP e usarBeautifulSoupbiblioteca para analisar conteúdo HTML para rastrear um site real (por exemplo, usamoshttps://www.wikipedia.orgPor exemplo, mas observe que o rastreamento real deve estar em conformidade com asrobots.txtregulamentos e política de direitos autorais).

Primeiro, certifique-se de que instalamosrequestsebeautifulsoup4 biblioteca. Se não estiver instalado, use pip para instalá-lo:

  1. bash复制代码
  2. pip install requests beautifulsoup4

Podemos então usar o seguinte código para capturar e imprimir o título da página inicial da Wikipedia:

  1. # 导入必要的库  
  2. import requests  
  3. from bs4 import BeautifulSoup  
  4.  
  5. def fetch_and_parse_title(url):  
  6.    """  
  7.   发送HTTP GET请求到指定的URL,解析HTML内容,并返回网页的标题。  
  8.  
  9.   参数:  
  10.   url (str): 需要抓取的网页的URL。  
  11.  
  12.   返回:  
  13.   str: 网页的标题,如果抓取或解析失败则返回相应的错误消息。  
  14.   """  
  15.    try:  
  16.        # 发送HTTP GET请求  
  17.        headers = {  
  18.            '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'  
  19.       }  # 设置User-Agent来模拟浏览器访问  
  20.        response = requests.get(url, headers=headers)  
  21.  
  22.        # 检查请求是否成功  
  23.        if response.status_code == 200:  
  24.            # 使用BeautifulSoup解析HTML内容  
  25.            soup = BeautifulSoup(response.text, 'html.parser')  
  26.  
  27.            # 查找网页的<title>标签  
  28.            title_tag = soup.find('title')  
  29.  
  30.            # 提取并返回标题内容  
  31.            if title_tag:  
  32.                return title_tag.get_text(strip=True)  
  33.            else:  
  34.                return "No title found in the webpage."  
  35.        else:  
  36.            return f"Failed to retrieve the webpage. Status code: {response.status_code}"  
  37.    except requests.RequestException as e:  
  38.        return f"Error fetching the webpage: {e}"  
  39.  
  40. # 示例URL(这里使用Wikipedia的主页作为示例)  
  41. url = 'https://www.wikipedia.org'  
  42.  
  43. # 调用函数并打印结果  
  44. title = fetch_and_parse_title(url)  
  45. print(f"The title of the webpage is: {title}")

Este código primeiro define um cabeçalho de solicitação (headers), que contém umUser-Agent campo, isso simula um acesso real do navegador, pois alguns sites verificarão o cabeçalho da solicitação para evitar o acesso do rastreador. Em seguida, ele envia uma solicitação GET para o URL especificado e usa BeautifulSoup para analisar o conteúdo HTML retornado.Em seguida, procura o HTML<title> tag e extraia seu conteúdo de texto como o título da página da web. Finalmente, ele imprime o título no console.

Observe que embora este exemplo use a Wikipédia como exemplo, em um projeto real devemos sempre aderir aos requisitos do site de destino.robots.txtdocumentação e políticas de direitos autorais para garantir que nossas práticas de rastreamento sejam legais e éticas.