Compartir tecnología

Módulo de solicitudes de rastreador de Python

2024-07-12

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

Juegos previos:
1. ¿Quieres ver algunas imágenes que te impedirán dormir en plena noche, pero no tienes los recursos...
2. ¿Quiere comprar billetes de tren rápidamente durante la temporada alta de viajes durante las vacaciones?
3. Al comprar online, ¿quieres localizar de forma rápida y precisa los productos con mejor reputación y calidad?

¿Qué es un rastreador?
- Al escribir un programa, simule el proceso de un navegador que navega por Internet y luego le permite rastrear datos de Internet.

El valor del rastreador:

-Aplicaciones prácticas

-Empleo

¿Los rastreadores son legales o ilegales?

no está prohibido por la ley

Riesgo de infringir la ley.

Reptiles buenos Reptiles maliciosos

Los riesgos que plantean los rastreadores se pueden reflejar en los dos aspectos siguientes:
-Los rastreadores interfieren con el funcionamiento normal de los sitios web visitados.
-Los rastreadores capturan tipos específicos de datos o información que están protegidos por la ley.

¿Cómo evitar la mala suerte de meterse en problemas al utilizar un rastreador?

- Optimice frecuentemente sus propios programas para evitar interferir con el funcionamiento normal de los sitios web visitados.

- Al utilizar y difundir los datos rastreados, revise el contenido rastreado. Si se encuentra contenido confidencial, como secretos comerciales relacionados con el usuario, es necesario detener el rastreo o la difusión de manera oportuna.

Clasificación de rastreadores en escenarios de uso.
-Oruga universal:
Una parte importante del sistema de rastreo. Lo que se captura es una página completa de datos.
-Centrarse en los rastreadores:
Está construido sobre la base de un rastreador universal. Lo que se captura es contenido parcial específico de la página.

-Rastreador incremental:
Detectar actualizaciones de datos en el sitio web. Solo se rastrearán los datos actualizados más recientes del sitio web.


Lanza y escudo reptiliano
Mecanismo anti-escalada
Los sitios web del portal pueden evitar que los rastreadores rastreen los datos del sitio web mediante la formulación de estrategias o medios técnicos correspondientes.
Estrategia anti-anti-escalada
El programa de rastreo puede descifrar el mecanismo anti-rastreo en el sitio web del portal formulando estrategias o medios técnicos relevantes para obtener la información del portal.


Protocolo robots.txt: +/robots.txt se puede ver después de cualquier sitio web
Pacto de caballeros. Estipula qué datos del sitio web pueden ser rastreados por los rastreadores y qué datos no pueden ser rastreados.

protocolo http

- Concepto: Es una forma de interacción de datos entre el servidor y el cliente.

Información del encabezado de solicitud común: identidad del transportista de la solicitud

- Usuario-Agente: Conexión: una vez completada la solicitud, ya sea para desconectar o mantener la conexión
Información del encabezado de respuesta común
-Tipo de contenido: el tipo de datos que el servidor responde al cliente.


protocolo https: - Protocolo seguro de transferencia de hipertexto (seguridad)
Cifrado
Cifrado de clave simétrica
Cifrado de clave asimétrica
Cifrado de clave 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}')