Compartilhamento de tecnologia

Módulo de solicitações do rastreador Python

2024-07-12

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

Preliminares:
1. Quer ver algumas fotos que vão fazer você não conseguir dormir na calada da noite, mas não tem recursos...
2. Você deseja comprar passagens de trem rapidamente durante a alta temporada durante as férias?
3. Ao fazer compras online, você deseja localizar com rapidez e precisão os produtos com melhor reputação e qualidade?

O que é um rastreador:
- Ao escrever um programa, simule o processo de um navegador navegando na Internet e, em seguida, deixe-o rastrear dados da Internet.

O valor do rastreador:

-Aplicações práticas

-Emprego

Os rastreadores são legais ou ilegais?

não é proibido por lei

Risco de infringir a lei

Répteis bons, répteis maliciosos

Os riscos trazidos pelos rastreadores podem ser refletidos nos dois aspectos a seguir:
-Os rastreadores interferem no funcionamento normal dos sites visitados
-Os rastreadores capturam tipos específicos de dados ou informações protegidos por lei

Como evitar o azar de ter problemas ao usar um rastreador?

- Otimize frequentemente os seus próprios programas para evitar interferir no funcionamento normal dos sites visitados

- Ao usar e divulgar os dados rastreados, revise o conteúdo rastreado. Se for encontrado conteúdo confidencial, como segredos comerciais relacionados ao usuário, o rastreamento ou a disseminação deverão ser interrompidos em tempo hábil.

Classificação de crawlers em cenários de uso
-Rastreador universal:
Uma parte importante do sistema de rastreamento. O que é capturado é uma página inteira de dados.
-Foco em rastreadores:
Ele é construído com base em um rastreador universal. O que é capturado é o conteúdo parcial específico da página.

- Rastreador incremental:
Detecte atualizações de dados no site. Somente os dados atualizados mais recentes do site serão rastreados.


Lança e Escudo Reptiliano
Mecanismo anti-escalada
Os sites de portal podem impedir que os rastreadores rastreiem os dados do site, formulando estratégias ou meios técnicos correspondentes.
Estratégia anti-anti-escalada
O programa rastreador pode quebrar o mecanismo anti-rastreamento do site do portal, formulando estratégias ou meios técnicos relevantes, de forma a obter as informações do portal.


Protocolo robots.txt: +/robots.txt pode ser visto em qualquer site
Acordo de cavalheiros. Ele estipula quais dados do site podem ser rastreados por rastreadores e quais dados não podem ser rastreados.

protocolo HTTP

- Conceito: É uma forma de interação de dados entre o servidor e o cliente.

Informações comuns do cabeçalho da solicitação: Identidade do transportador da solicitação

- User-Agent:Connection: Após a conclusão da solicitação, seja para desconectar ou manter a conexão
Informações comuns do cabeçalho de resposta
-Content-Type: O tipo de dados que o servidor responde ao cliente


Protocolo https: - Protocolo seguro de transferência de hipertexto (segurança)
Criptografia
Criptografia de chave simétrica
Criptografia de chave assimétrica
Criptografia de chave de certificado

texto

  1. import requests
  2. # 检查当前脚本是否作为主程序运行
  3. if __name__ == "__main__":
  4. # 定义 KFC 官方网站获取门店列表信息的 URL
  5. url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'
  6. # 定义 HTTP 请求的头部信息,模拟浏览器请求
  7. headers = {
  8. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'
  9. }
  10. # 提示用户输入一个位置信息,作为搜索门店的关键词
  11. keyword = input('enter location:') # 例如 "北京"
  12. # 循环请求第1页到第9页的数据
  13. for page in range(1,10):
  14. # 定义发送请求时所需的参数
  15. params = {
  16. 'op': 'keyword', # 操作类型为关键词搜索
  17. 'cname': '', # 城市名称(此处为空)
  18. 'pid': '', # 其他参数(此处为空)
  19. 'keyword': keyword, # 用户输入的关键词
  20. 'pageIndex': page, # 当前请求的页面索引
  21. 'pageSize': 1000, # 每页显示的门店数量
  22. }
  23. # 尝试发送请求并处理响应
  24. try:
  25. # 发送 GET 请求,请求参数包括 URL、参数和头部信息
  26. response = requests.get(url=url, params=params, headers=headers)
  27. # 检查响应状态码,如果不是 200,将引发 HTTPError 异常
  28. response.raise_for_status()
  29. # 获取响应内容
  30. page_text = response.text
  31. # 构建文件名,包括关键词、页码和 .html 扩展名
  32. filename = f'{keyword}_page_{page}.html'
  33. # 打开一个文件,以写入模式打开,并指定编码为 utf-8
  34. with open(filename, 'w', encoding='utf-8') as fp:
  35. # 将响应内容写入到文件中
  36. fp.write(page_text)
  37. # 打印一条消息,表明文件已经成功保存
  38. print(f'{filename} 保存成功!!!')
  39. # 捕获由 requests 库抛出的任何异常
  40. except requests.RequestException as e:
  41. # 打印异常信息
  42. print(f'请求错误: {e}')